今日推荐音乐:我最爱的霉霉
在学习pytest的时候,生成的html报告觉得实在不是很美观,查到资料有很多测试报告的第三方插件,不仅美观而且查看测试用例也很方便,那我们一起来学习下吧~0 1
参考案例
要学习一个新技术,最快捷的方法就是去网上找一个demo先练习,然后结合自己的项目练手。于是我找了网上案例并适当修改了下,test_report.py文件如下:
import allure@allure.feature('天气预报功能')class TestReportStyle(object): @allure.story('查询上海天气') def test_search_weather(self): login('小明', '123') with allure.step('输入城市'): allure.attach('上海') with allure.step('点击查询'): pass with allure.step('查询结果'): allure.attach('查询成功', '期望结果') allure.attach('查询失败', '实际结果') assert 'success' == 'failed' @allure.story('查询下周天气') def test_search_nextweek(self): pass@allure.step('用户登录')def login(user, pwd): print(user, pwd)
Allure用法说明:
@allure.feature('XXX'): 测试用例需求,就相当于告诉报告这个脚本主要功能是做什么的;
@allure.story('XXX'): 测试场景,就相当于一个测试用例;
with allure.step('XX'): 测试步骤;
with allure.attch('XX'): 测试数据,用户输入的测试内容或者截图等信息;
@allure.step('XX'): 将函数作为测试步骤放入测试报告中;0 2
结合项目实战
结合上一篇请求豆瓣电影的小demo,做一个优化。
import yamlimport allureimport pytestimport requestsfrom utils import comm_functiondef get_test_data(filepath): case = [] # 存放测试用例名 requests = [] # 存放http请求对象 validate = [] # 存放断言 with open(filepath, encoding='utf-8') as f: data = yaml.load(f.read(), Loader=yaml.SafeLoader) case.append(data.get('test')) requests.append(data.get('requests')) validate.append(data.get('validate')) params = zip(case, requests, validate) return case, paramscases, parameters = comm_function.get_test_data('D:/workFile/test/pytest_demo/data/test_movie.yaml')list_params = list(parameters)print(list_params[0][1])@allure.feature('豆瓣电影列表测试用例') # 测试场景class TestInTheaters(object): @allure.story('查询电影列表') # 测试用例 @pytest.mark.parametrize('case,http,validate', list(list_params), ids=cases) def test_in_theaters(self, case, http, validate): host = 'http://api.douban.com' with allure.step('请求豆瓣网-上映的电影'): # 测试步骤 allure.attach('start', validate['count']) # 测试数据 allure.attach('count', validate['start']) # 测试数据 res = requests.request(http['method'], url=host+http['path'], headers=http['headers'], params=http['params']) response = res.json() assert response['count'] == validate['count'] assert response['start'] == validate['start'] assert response['title'] == validate['title']
代码运行:
第一步:将测试数据打包
pytest 脚本目录 --alluredir 存放报告目录
第二步:生成测试报告
allure generate -o 运行结果目录 存放报告目录 --clean # 清空
查看结果:
遇到的坑:
1、手机端安装的allure,在pycharm中提示没有allure命令。
解决办法:
pycharm的teminal中,pip list查看当前Python下可用的插件,没有的话安装下
2、生成过一次的测试报告,再次运行的时候会出现以前的测试情况,明明我clean了啊?
解决办法:
我打包测试数据的时候,运行多次,那我的测试数据当前会出现重复啦!删除下重新运行就可以了。
pytest相关文章推荐:
1、初步了解Pytest测试框架
2、pytest+yaml实现接口自动化