前言
根据之前的requests请求、config配置文件读取、yaml测试数据读取、日志输出、断言,我们基本已经构成一个初步的自动化测试框架。本文简单讲解pytest+allure编写测试用例
allure 报告标记
@allure.feature # 用于定义被测试的功能,被测产品的需求点
@allure.story # 用于定义被测功能的用户场景,即子功能点
@allure.severity #用于定义用例优先级
@allure.issue #用于定义问题表识,关联标识已有的问题,可为一个url链接地址
@allure.testcase #用于用例标识,关联标识用例,可为一个url链接地址
pytest 常用方法
@pytest.fixture(),写入conftest.py 配置里可以实现数据共享,不需要 import 自动找到fixture
@pytest.mark.parametrize("data_name1,data_name2",data) pytest参数化,data_name1,data_name2为参数名
与用例函数参数对应。data格式为列表,多参数为元组形式
@pytest.mark.dependency(name = "别名"),装饰器设置被依赖用例,即被依赖用例返回true,依赖用例才继续执行,否则跳过执行
@pytest.mark.dependency(depends=['user_login'], scope="session"),depends设置所依赖的用例名,scope设置作用域:
session、package、module、class,默认为module
测试用例
根据上文所述allure和pytest的标记 语法我们生成测试用例
from MyConfig import Config
from Utils import ReadYaml
from Utils import Requests
import allure
import pytest
from Utils import Assert
class TestQaHome(object):
yaml = ReadYaml.GetPages()
qa_type_data = yaml.get_data_list("/Data/datas/qa_new_type.yaml")
def setup_class(self):
self.requests = Requests.Requests()
self.config = Config.Config()
self._assert = Assert.Assert()
def teardown_class(self):
pass
@allure.feature("首页测试类")
@allure.severity('blocker')
@allure.story('切换菜单栏')
@allure.description('菜单栏切换')
@allure.link('http://www.baidu.com')
@allure.issue('BUG编号:qa_001')
@allure.testcase('验证菜单栏切换数据是否正常')
@pytest.mark.parametrize("data,asserts", qa_type_data)
def test_type(self, data, asserts):
"""
:param data: 请求参数,dict转str
:param asserts: 断言参数str类型
:return:
"""
url = self.config.host + "portal/qa-new/type"
response = self.requests.post(url=url, data=str(data).encode('utf-8'))
self._assert.assert_in_body(response, asserts)
run.py 测试执行入口
#执行用例,设置报告路劲
-s 输出print控制台,-v显示详细信息
pytest.main(['-s','-v','--alluredir',xml_report_path])
#生成html测试报告并指定路劲
allure generate xml_path -o html_path
|