Openshift+Jenkins+zalenium+HtmlReporter实现自动化测试
上篇介绍了如果在openshift上部署zalenium及python对应用功能进行测试的方法。
该篇介绍如何通过Jenkins的Slave容器配合上篇中的zalenium实现自动化功能测试,并生成测试报告。虽然只是一个小例子,但是麻雀虽小,五脏俱全。同时所有的操作及工具都建立在Openshift上。
下图为各工具之间的关系:
###具体操作:
- 启动Jenkins需要添加环境变量
JENKINS_JAVA_OVERRIDES
=>-Dhudson.model.DirectoryBrowserSupport.CSP=
该环境变量使得HtmlReporter页面展示正常
- 启动Jenkins需要添加环境变量
- Jenkins系统管理->系统设置中创建新的Kubernetes Pod Template
基础镜像jenkins-slave-python-centos7:3.10
,Dockerfile安装需要的python依赖包
1
2
3# Dockerfile
FROM informaticsmatters/jenkins-slave-python-centos7
RUN pip install selenium -i https://pypi.douban.com/simple/- Jenkins系统管理->系统设置中创建新的Kubernetes Pod Template
- 代码中添加自动化测试脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44# -*- coding: utf-8 -*-
import unittest
from selenium import webdriver
from selenium.webdriver.remote.remote_connection import RemoteConnection
from HTMLTestRunner import HTMLTestRunner
class SeleniumTestCase(unittest.TestCase):
def setUp(self):
remoteconnection = RemoteConnection('http://zalenium.example.com/wd/hub',
keep_alive=False,
resolve_ip=False)
self.driver = webdriver.Remote(command_executor=remoteconnection,
desired_capabilities={
'browserName': "chrome",
'video': 'True',
'platform': 'LINUX',
'platformName': 'LINUX'
})
self.driver.implicitly_wait(30)
self.driver.maximize_window()
def test_login_test_case(self):
self.driver.get("https://devpf.example.com")
username_input = self.driver.find_element_by_id('username')
password_input = self.driver.find_element_by_id('password')
login_button = self.driver.find_element_by_id('login_btn')
username_input.clear()
username_input.send_keys('panxiaohua')
password_input.clear()
password_input.send_keys('12345678')
login_button.click()
assert not None is self.driver.find_element_by_id('content'), 'Error Happends'
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(SeleniumTestCase))
with open('report.html', 'w') as f:
runner = HTMLTestRunner(stream=f, title='Test Report', verbosity=2)
runner.run(suite)
- 代码中添加自动化测试脚本
- Jenkins Job中完成部署后,执行测试脚本
1
2cd tests
python test_urls.py
- Jenkins Job中完成部署后,执行测试脚本
- 导出自动测试报表
- 最后结果展示
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论