基于pytest单元测试框架,默认测试用例的规则:
1.模块名(py文件)必须以test_开头或_test结尾。
2.类名必须Test开头
3.用例名必须以test_开头
一、pytest框架插件:
- pytest-html 生成html报告插件
- pytest-xdist 多线程
- pytest-ordering 标记测试用例的执行
- pytest-rerunfailures 失败用例重跑
- pytest-base-url 管理基础路径
- allure-pytest 生成allure报告
执行的方式
if __name__ == '__main__':
pytest.main(["-vs"])
执行时的参数
- -v 输出更消息的信息
- -s 输出调试信息(如打印)
- -n 多线程运行测试用例
- reruns 失败用例重跑
- -html 生成html报告
使用requirements.txt文件保存,并运行pip install -r requirements.txt
二、详解ruquests:
def get(url, params=None, **kwargs):
def post(url, data=None, json=None, **kwargs):
def put(url, data=None, **kwargs):
def patch(url, data=None, **kwargs):
def delete(url, **kwargs):
def head(url, **kwargs):
def options(url, **kwargs):
def request(method, url, **kwargs):
三、执行用例时前置后置的处理
#第一种:
class Testlogin():
def setup_class(self):
print("类之前执行")
def teardown_class(self):
print("类之后执行")
def setup(self):
print("用例之前执行")
def teardown(self):
print("用例之后执行")
#第二种 fixture
#装饰器:@pytest.fixture(scope=“”,params=“”,autouse=“”,ids=“”,name=“”)
scope : 作用域
**function(函数,用例,默认)
class(类)
module(模块)
package / session(回话)
params : 数据驱动
autouse : 自动作用 / 手动作用
true(自动调用) false(手动调用,需要传入固件名称)
手动调用方式: @pytest.mark.usefixtures(exe_assert)
ids : 当数据驱动时更改参数名
name : fixture的别名
@pytest.fixture(scope="function",autouse=False,params=read_yaml(),ids=["one","two","three"])
def exe_assert(request):
print ("查询数据库用于断言")
yield request.param
print ("再用例之后 查询数据库用于断言")