下载后解压并配置环境变量
希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息可以使用@feature,@story,@step,@attach
步骤:
allure特性—feature/story
@allure.feature与@allure.store的关系
step特性
运行:
在测试执行期间收集结果
pytest [测试文件] -s -q --alluredir=./result --clean-alluredir
查看测试报告:
方法一:测试完成后查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告
allure serve ./result
方法二:从结果生成报告,这是一个启动tomcat的服务,需要两个步骤
生成报告:
allure generate ./result -o ./report --clean (注意:--clean用来清除之前已生成的报告)
打开报告:
allure open -h 127.0.0.1 -p 8883 ./report
举个例子:
有如下代码文件
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:test_allure.py @time:2020/10/10 """ import allure import pytest @allure.feature(‘登录模块‘) class TestLogin(): @allure.story(‘登录成功‘) @allure.title(‘登录成功标题‘) def test_login_sucess(self): with allure.step(‘步骤1:打开应用‘): print(‘应用已打开‘) with allure.step(‘步骤2:进入登录页面‘): print(‘登录页面已打开‘) with allure.step(‘步骤3:输入用户名和密码‘): print(‘用户名和密码输入成功‘) print(‘登录测试用例:登录成功‘) @allure.story(‘登录成功‘) def test_login_sucess2(self): assert ‘1‘ == 1 print(‘登录测试用例:登录成功‘) @allure.story(‘登录失败‘) def test_login_failure_a(self): print(‘登录测试用例:登录失败,用户名缺失‘) @allure.story(‘登录失败‘) def test_login_failure_b(self): print(‘登录测试用例:登录失败,密码缺失‘) @allure.story(‘登录失败‘) def test_login_failure_c(self): with allure.step(‘输入用户名‘): print(‘已输入用户名‘) with allure.step(‘输入密码‘): print(‘已输入密码‘) with allure.step(‘点击登录‘): print(‘已点击登录‘) print(‘登录测试用例:登录失败,密码错误‘) @allure.feature(‘搜索模块‘) class TestSearch(): def test_search1(self): print(‘搜索用例1‘) TEST_CASE_LINK = ‘https://mirrors.huaweicloud.com/‘ @allure.testcase(TEST_CASE_LINK,‘测试用例连接‘) def test_search2(self): print(‘搜索用例2‘) @allure.step(‘搜索步骤‘) def test_search3(self): print(‘搜索用例3‘)
依次执行命令:
pytest test_allure.py --alluredir=./result --clean-alluredir
allure serve ./result
chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_allure.py --alluredir=./result --clean-alluredir ============================================================================= test session starts ============================================================================= platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini plugins: allure-pytest-2.8.18 collected 8 items test_allure.py .F...... [100%] ================================================================================== FAILURES =================================================================================== ________________________________________________________________________ TestLogin.test_login_sucess2 _________________________________________________________________________ self = <test_allure.TestLogin object at 0x7fef3d5cba90> @allure.story(‘登录成功‘) def test_login_sucess2(self): > assert ‘1‘ == 1 E AssertionError: assert ‘1‘ == 1 test_allure.py:27: AssertionError =========================================================================== short test summary info =========================================================================== FAILED test_allure.py::TestLogin::test_login_sucess2 - AssertionError: assert ‘1‘ == 1 ========================================================================= 1 failed, 7 passed in 0.07s ========================================================================= chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result Generating report to temp directory... Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/7024790777193223986/allure-report Starting web server... 2020-10-13 21:39:56.174:INFO::main: Logging initialized @6818ms to org.eclipse.jetty.util.log.StdErrLog Server started at <http://192.168.12.100:58977/>. Press <Ctrl+C> to exit
生成的报告:
allure特性-testcase
关联测试用例(可以直接给测试用例的地址链接)
例子:
TEST_CASE_LINK = ‘https://mirrors.huaweicloud.com/‘ @allure.testcase(TEST_CASE_LINK,‘测试用例连接‘) def test_search(self): print(‘搜索用例‘)
按重要性级别进行一定范围测试
通常测试有P0、冒烟测试、验证上线测试。按重要性级别来执行的,比如上线要把主流程和重要模块都跑一遍,可通过以下方法解决
举例说明:
#!/usr/bin/python # -*- coding: UTF-8 -*- """ @author:chenshifeng @file:test_severity.py @time:2020/10/11 """ import allure import pytest # 不加任何标记 def test_with_no_severity(): pass # trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范) @allure.severity(allure.severity_level.TRIVIAL) def test_with_trivial_severity(): pass # minor 级别 不太重要,次要缺陷(界面错误与UI需求不符) @allure.severity(allure.severity_level.MINOR) def test_with_minor_severity(): pass # normal:正常问题,普通缺陷(数值计算错误) @allure.severity(allure.severity_level.NORMAL) def test_with_normal_severity(): pass # critical:严重,临界缺陷(功能点缺失) @allure.severity(allure.severity_level.TRIVIAL) def test_with_trivial_severity(): pass # blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作) @allure.severity(allure.severity_level.BLOCKER) def test_with_blocker_severity(): pass @allure.severity(allure.severity_level.NORMAL) class TestClassWithNormalSeverity(object): def test_inside_with_normal_severity(self): pass @allure.severity(allure.severity_level.CRITICAL) def test_inside_with_critical_severity(self): pass
执行:
chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_severity.py --alluredir=./result --clean-alluredir ============================================================================= test session starts ============================================================================= platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini plugins: allure-pytest-2.8.18 collected 7 items test_severity.py ....... [100%] ============================================================================== 7 passed in 0.04s ============================================================================== chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result Generating report to temp directory... Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/12787840024126794872/allure-report Starting web server... 2020-10-13 22:03:47.200:INFO::main: Logging initialized @6670ms to org.eclipse.jetty.util.log.StdErrLog Server started at <http://192.168.12.100:59349/>. Press <Ctrl+C> to exit
原文:https://www.cnblogs.com/feng0815/p/13792188.html