前言:请自行安装好yaml/allure/jre,并且配置好环境变量
HTMLTestRunner.py已修改,支持python3.9。请把它放在你的python\Lib目录下
HTMLTestRunner.py下载
1.项目文件结构目录
- allureReport:用来存放allure生成的测试报告
- HTMLTestRunnerReport:用来存放HTMLTestRunner生成的测试报告
- common(可不用):用来存放封装好的方法,比如连接数据库的方法、发送登陆协议的方法等等
- config(可不用):配置文件
- data(可不用):测试用的数据文件,可以是csv、yaml、txt、xlrd等格式
- testcase:存放各种测试用例
※文件可不用的原因是新手可以先尝试写简单的测试用例,包括数据之类的都可以直接写在case里,但是测试用例如果不用固件封装的话维护性较低,后期再慢慢改进吧。
2.测试用例的固定要求
- .py文件必须以test_开头或者_test结尾
- 测试类必须以Test开头并且不能带有__init__方法
- 测试函数(测试用例)必须以test_开头
举个例子:
class TestItem(): #测试类可以是这样
class Test_Item(): #也可以是这样
def test_login(self, *args): #测试用例长这样
'''用例内容'''
3.pytest测试用例案例
class TestItem:
'''↑↑↑↑↑↑↑↑↑这是个测试类'''
@staticmethod
def setup_class(self): #前置,不明白自己去百度
print('用例开始执行')
@staticmethod
def teardown_class(self): #后置,同上
print('用例执行结束')
def test_1(self): #测试用例1
print('nice啊兄die')
def test_2(self): #测试用例2
x = 1
y = 9
assert x == y
执行结果,用例1通过并且打印了内容;用例2未通过,因为1≠9。
4.Yaml的作用?yaml如何调用?
- 作用:假设你要通过脚本进行账号登陆,那么你会写一个登陆脚本,然后在脚本内写入要登陆的账号、账号密码。但是这个脚本只能登陆一个账号,如果要登陆1000个账号岂不是要写1000个脚本?这里就可以让脚本访问yaml数据,通过传入不同的账号信息参数,进行不同账号的登陆。
- 使用:首先要创建一个.yaml文件
内容我随便写了两组数据。
数据1:
s:
username: sjx001
password: 1234567
j:
username: sjx002
password: 1234567
x:
username: sjx002
password: 1234567
数据2:
QQ:
-
username: sjx001
password: 1234567
-
username: sjx002
password: 1234567
weixin:
-
username: sjx003
password: 1234567
-
username: sjx004
password: 1234567
weibo:
-
username: sjx005
password: 1234567
-
username: sjx006
password: 1234567
这个数据让python读取出来的样子是嵌套的字典,我们可以通过键去调用。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
{‘s’: {‘username’: ‘sjx001’, ‘password’: 1234567}, ‘j’: {‘username’: ‘sjx002’, ‘password’: 1234567}, ‘x’: {‘username’: ‘sjx002’, ‘password’: 1234567}}
演示一下
1.如果想使用所有的账号信息,数据1演示。
直接使用ddt.file_data,注意使用DDT的话测试类需要继承unittest。
三组数据分别被打印了
2.如果只想登陆某组数据,数据2演示。
使用yaml中的键来指定。
结果是只打印了weibo下面的账号信息,OK
5.HTMLTestRunner生成测试报告
源码及注释都给你打出来,自己去理解。
import time
import os
import unittest
from HTMLTestRunner import HTMLTestRunner
def getAllCases():
'''获取test_dir目录下所有以test_开头的测试用例并放入容器Testsuite中'''
test_dir = r'D:\Test\testcase'
Testsuite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
return Testsuite
def Runmain():
'''在指定的路径下生成html格式的测试报告'''
TestReport_dir = 'D:\Test\HTMLTestRunnerReport'
fp = open(os.path.join(TestReport_dir, time.strftime("%Y-%m-%d %H时%M分%S秒")+'测试报告.html'), 'wb')
runner = HTMLTestRunner(stream=fp, title='sjx的自动化测试报告', description='这是个案例')
runner.run(getAllCases())
if __name__ == '__main__':
Runmain()
生成的测试报告长这样!!!
6.allure生成测试报告
在配置好java环境且安装好allure的前提下,请你完成你的测试用例,并且规范点放在自己的测试项目里!
然后在终端输入pytest --alluredir +生成报告的目录。
pytest会开始执行你的测试用例,并且通过allure生成测试报告。
然后输入allure serve +生成报告的目录 打开测试报告,完事
两种测试报告根据自己的口味进行选择。达到这一步以后,可以根据实际需求去结合jenkins更进一步完善自动化过程。如果想在linux系统下执行脚本的话配置也是一样的,前提是你能够配置好linux环境。
以上就简单得展示了一遍测试报告的生成。
持续更新ing!当个快乐的测试工程师。
转载:https://blog.csdn.net/sjx1111111/article/details/110872608