allure在自动化测试中经常用来生成漂亮的报告,但是网上及官网上给出的例子都仅仅是针对单个测试用例文件的形式介绍的,实际使用中,自动化测试往往需要包含不止一个产品或项目,本文介绍如何使用nginx+allure来管理自动化测试报告,使自动化测试报告可以按照产品分开查看,且可以查看历史报告。
自动化测试工程示例结构
main.py主要用来在python文件中启动pytest。
testsuites目录包含两个示例项目的测试用例。
allure_result存放allure生成的测试结果。
report存在allure generate命令生成的html报告。其中报告按照日期划分目录,每个日期下又按照项目划分目录。
nginx配置目录服务器
配置nginx.conf配置文件
????server?{ ????#?配置服务监听端口 ????????listen???????80; ????????server_name??localhost; ????????location?/?{ ????????#?配置allure测试报告的目录,根据实际情况更改,注意路径中不能包含中文,否则会报错 root?C:\\allure_demo\\report; #?启用autoindex,这样就可以查看report目录及子目录信息,作为文件服务器使用 autoindex?on; ????????} }
启动nginx之后,访问http://localhost,可以查看存在哪些日期目录。
点击指定日期,可以访问该日期下哪些项目存在测试报告
然后,再点击指定的项目就可以查看到该项目在该日期下的自动化测试报告了。
代码
testsuites目录下就是按照pytest要求编写的测试用例,其中可以使用allure-pytest插件添加用例特性、步骤等信息,以test_demo1.py测试用例文件为例,示例如下:
import?pytest import?allure?? @allure.step("步骤1") def?step1(): ????print("执行步骤1")?? @allure.step("步骤2") def?step2(): ????print("执行步骤2")?? @allure.step("步骤3") def?step3(): ????print("执行步骤3")?? @allure.feature("demo模块特性") @allure.story("用户故事1") def?test_case01(): ????step1() ????step2() ????step3()
main.py主要用来启动pytest执行测试用例,示例代码按照项目名称分别执行自动化测试,并自动生成allure测试报告到当前日期目录及指定项目名称下,执行完毕后刷新浏览器就可以查看最新测试报告了。
import?datetime import?os import?pytest?? def?run(project): #?启动pytest #?测试结果存放到alluredir指定目录 #?--clean-alluredir表示清理历史结果 ????pytest.main([ ????????"testsuites/{}".format(project), ????????"--alluredir=allure_result", ????????"--clean-alluredir", ????????"-vs" ????]) ?? if?__name__?==?"__main__": ????today?=?datetime.datetime.now().strftime("%Y-%m-%d") ????#?运行project1项目的自动化测试 ????run("project1") ????#?生成project1的allure测试报告到report/yyyy-mm-dd/project1目录下 ????os.system("allure?generate?-c?allure_result?-o?report/{0}/{1}".format(today,?"project1")) #?运行project1项目的自动化测试 ????run("project2") ????#?生成project1的allure测试报告到report/yyyy-mm-dd/project2目录下 ????os.system("allure?generate?-c?allure_result?-o?report/{0}/{1}".format(today,?"project2"))
参考文献
[1]. Allure Framework (qameta.io)