接口自动化-allure的使用
首先,最好的参考应该是官方文档:http://allure.qatools.ru/
1. report界面:总览页面、缺陷页面、xunit单元测试页面、行为驱动开发页面、视图页面;
2. 安装配置:
windows: 解压到项目文件夹下,运行allure.bat添加环境变量,cmd: allure --version检查是否添加环境变量成功。
3. allure的工作原理。
3.1 解压缩allure,添加环境变量,安装allure-pytest程序包,运行test*.py(pytest自动运行里面test开头的方法),同时生成与Allure 2兼容的报告数据,xml格式。
3.2 allure serve xml报告文件夹路径;生成html格式的allure报告,以在浏览器查看。
4.环境。
4.1
environment.properties文件,放置在xml报告目录,allure生成的html报告总览上会显示测试环境内容:
Browser=Chrome
Browser.Version=63.0
Stand=Production
4.2
categories.json创建自定义缺陷分类,在生成报告之前将文件添加到目录中
[
{
"name": "Ignored tests",
"matchedStatuses": ["skipped"]
},
{
"name": "Infrastructure problems",
"matchedStatuses": ["broken", "failed"],
"messageRegex": ".*bye-bye.*"
},
{
"name": "Outdated tests",
"matchedStatuses": ["broken"],
"traceRegex": ".*FileNotFoundException.*"
},
{
"name": "Product defects",
"matchedStatuses": ["failed"]
},
{
"name": "Test defects",
"matchedStatuses": ["broken"]
}
]
其中的测试状态列表。可选默认值为:["failed", "broken", "passed", "skipped", "unknown"];
5. allure的配置使用(python中)
5.0 安装:
pip install allure-pytest
这将安装allure-pytest和allure-python-commons程序包,以生成与Allure 2兼容的报告数据;
5.1 指定测试报告的生成路径:(命令行不能运行时pytest加环境变量)
pytest --alluredir=/tmp/my_allure_results
5.2 生成html报告:
allure serve /tmp/my_allure_results
5.3 上面的在python导入pytest环境的情况下,也可以如下写:
if __name__ == "__main__":
# pytest.main(['test_1.py'])
# 生成测试报告---json格式
pytest.main(['--alluredir', 'D:/se_frame/Reports/allure_data', 'test_1.py'])
# allure转换成---html并打开测试报告
os.system('cd D:/se_frame/Reports/allure_data')
# 清理上次的报告并生成新的报告
os.system('allure generate D:/se_frame/Reports/allure_data -o D:/se_frame/Reports/html --clean')
os.system('allure serve D:/se_frame/Reports/allure_data')
————————————————
版权声明:本文为CSDN博主「老_焦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45451320/article/details/113916870
#
6. allure常用装饰器
@allure.feature #主题名,大的功能点,比如用在一个类上面
@allure.story # 用故事标题,小的用例标题,用于行为驱动开发页面查看
@allure.description(str)# 详细的测试用例描述;python中也可以用多行注释代替;
@allure.title # 用例标题,设置显示的方法名;在单元测试页面查看;
@allure.severity(allure.severity_level.BLOCKER) # 设置用例优先级;
@allure.link # 设置可以点击查询访问的链接;
7. 参考他人实例:
7.1
@allure.feature('风险分析')
class Testriskesti_V2():
@allure.story("风险分析--无风险-行为驱动页面标题")
@allure.title("风险分析--无风险-单元测试页面标题:")
@pytest.mark.nomal
@allure.severity(allure.severity_level.CRITICAL) # 严重
def test_01(self):
'''
用例标题: 风险分析--无风险
前置条件: ***
断言:
1 / responseCode = 200
2 / 业务返回code = 0
'''
。。。
7.2
import pytest
import allure
# allure generate --clean report 生成测试报告
@allure.feature('购物车功能') # 用feature说明产品需求,可以理解为JIRA中的Epic
class TestShoppingTrolley(object):
@allure.story('加入购物车') # 用story说明用户场景,可以理解为JIRA中的Story
def test_add_shopping_trolley(self):
login('刘春明', '密码') # 步骤1,调用“step函数”
with allure.step("浏览商品"): # 步骤2,step的参数将会打印到测试报告中
allure.attach('笔记本', '商品1') # attach可以打印一些附加信息
allure.attach('手机', '商品2')
with allure.step("点击商品"): # 步骤3
pass
with allure.step("校验结果"): # 步骤4
allure.attach('添加购物车成功', '期望结果')
allure.attach('添加购物车失败', '实际结果')
assert 'success' == 'failed'
@allure.story('修改购物车')
def test_edit_shopping_trolley(self):
pass
@pytest.mark.skipif(reason='本次不执行')
@allure.story('删除购物车中商品')
def test_delete_shopping_trolley(self):
pass
@allure.step('用户登录') # 将函数作为一个步骤,调用此函数时,报告中输出这个步骤,我把这样的函数叫“step函数”
def login(user, pwd):
print(user, pwd)
————————————————
版权声明:本文为CSDN博主「凯耐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36279318/article/details/105117073
7.3
import pytest
import allure
@allure.feature("这是登录模块测试用例")
class Test_login():
@allure.story("用户名正确,登录成功")
@allure.severity(allure.severity_level.BLOCKER) #阻塞
def test_logina(self):
allure.attach("这是一个纯文本",name="文本信息",attachment_type=allure.attachment_type.TEXT) #添加文本
print("这是登录,用户名正确,登录成功")
pass
@allure.story("密码正确,登录成功")
@allure.severity(allure.severity_level.CRITICAL) #严重
def test_loginb(self):
allure.attach("<body>这是一个网页</body>",name="HTML测试模块",attachment_type=allure.attachment_type.HTML) #添加网页
print("这是登录,密码正确,登录成功")
pass
@allure.story("用户名错误,登录失败")
# --allure-link-pattern=issue:https://blog.csdn.net/weixin_44275820/article/details/105169871/issue/{}
@allure.issue("10086","这是一个bug,需要修复")
@allure.severity(allure.severity_level.NORMAL) #正常问题
def test_loginc(self):
allure.attach.file("./picture/微信头像.jpg",name="这是一个图片",attachment_type=allure.attachment_type.JPG) #添加图片
print("这是登录,用户名错误,登录失败")
pass
@allure.story("密码错误,登录失败")
@allure.link("https://blog.csdn.net/weixin_44275820/article/details/105169871",name="我的博客")
@allure.severity(allure.severity_level.MINOR) #不太重要
def test_logind(self):
with allure.step("点击用户名输入框"):
print("输入用户名")
with allure.step("点击输入密码输入框"):
print("输入密码")
print("点击登录按钮")
with allure.step("点击登录后登录失败"):
assert "1" == 1
print("这是登录,密码错误,登录失败")
pass
Testcase_link = "https://blog.csdn.net/weixin_44275820/article/details/105169871"
@allure.story("用户不存在,登录失败")
@allure.testcase(Testcase_link,"我的博客管理平台")
@allure.severity(allure.severity_level.TRIVIAL) #不重要
def test_logine(self):
print("这是登录,用户不存在,请重新注册")
pass
@allure.story("密码已锁定,登录失败")
def test_loginf(self):
print("这是登录,密码已锁定,请重置密码")
pass
@allure.story("密码为空,登录失败")
def test_loging(self):
print("这是登录,密码为空,请输入密码")
pass
if __name__ =='__main__':
pytest.main("-v -s")
————————————————
版权声明:本文为CSDN博主「Detail-L」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44275820/article/details/105169996
7.4
import pytest
import allure
import time
from selenium import webdriver
Testcase_link1 = "https://www.baidu.com"
@allure.testcase(Testcase_link1,"百度,你值得拥有")
@allure.feature("百度搜索")
@pytest.mark.parametrize("search_data",["奔驰","宝马","保时捷"])
def test_search(search_data):
with allure.step("打开百度网页"):
driver = webdriver.chrome("C:\\Users\liwenliang\AppData\Local\Google\Chrome\Application\chrome.exe")
driver.get("https://www.baidu.com")
with allure.step(f"输入搜索词",{Testcase_link1}):
driver.find_element_by_id("KW").send_keys(search_data)
time.sleep(3)
driver.find_element_by_id("SU").click()
time.sleep(3)
with allure.step("保存图片"):
driver.save_screenshot("./result/b.png")
allure.attach.file("./result/b.png",name="这是保存的图片",attachment_type=allure.attachment_type.PNG)
with allure.step("关闭浏览器"):
driver.quit()
if __name__ =='__main__':
pytest.main("-v -s")
————————————————
版权声明:本文为CSDN博主「Detail-L」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44275820/article/details/105169996
-----------------------------------------------------------------------------------------