pytest 介绍
pytest特点
简单灵活,容易上手,支持参数化,测试用例的skip和xfail,自动失败重试
可以和jenkins集成
官方文档
测试用力的识别与运行
测试文件:test_py或test.py 明明
类名 Test开头,方法以 test开头,类不能有init方法
不在类里面 test_* 命名的方法
import pytest
def func(x):
return x+2
### 参数化
@pytest.mark.parametrize('a',[1,2,3])
def test_answer(a):
print('abc')
assert func(a) == 5
# 添加装饰器,在别的方法执行前调用
@pytest.fixture()
def login():
name = 'zhangsan'
return name
class Test_a:
# 调用装饰器的方法
def test_a(self,login):
print(f'a name = {login}')
def test_b(self):
print('b')
def test_b(self):
print('c')
参数化使用
@pytest.mark.parametrize(argnames, argvalues)
argnames:要参数化的变量,string,逗号分隔,list tuple
argvalues:参数化的值,list list[tuple]
class TestDate:
@pytest.mark.parametrize('a,b',[(10, 290), (1, 2), (2, 5)])
def test_date(self, a, b):
print(a+b)
# **yaml 参数化**
@pytest.mark.parametrize('a, b',yaml.safe_load(open("./date.yaml")))
def test_yaml(self, a, b):
print(a+ b)
数据驱动
数据驱动是由数据的改变驱动自动化测试执行
应用场景
测试步骤数据驱动,测试数据驱动,配置数据驱动
class Test_Demo:
# *号指的是解列表
@pytest.mark.parametrize('env', *yaml.safe_load(open("./date.yaml")))
def test_demo(self, env):
if "test" in env:
print('测试环境')
print(f'当前的环境是{env["test"]}')
elif 'dev' in env:
print('开发环境')
print(f'当前的环境是{env["dev"]}')
#yaml 文件数据
-
- dev: 127.0.0.2
- test: 127.0.0.1