目录
第一种:通过yaml文件获取数据(一维列表)
第二种:通过yaml文件获取数据(二维列表)
第三种:通过yaml文件获取数据(@pytest.fixture)
资料获取方法
第一种:通过yaml文件获取数据(一维列表)
data.yaml文件内容如下:
- '软件测试'
- '单元测试'
- '自动化测试'
- '性能测试'
- '测试开发'
- '测试架构师'
测试用例内容如下:
@pytest.mark.parametrize('data', yaml.load(open('data.yml', 'r')))
def test_ddt(data):url='https://www.baidu.com/search/query?key='header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}res=requests.get(url+data, header)assert res.status_code==200
第二种:通过yaml文件获取数据(二维列表)
data.yaml文件内容如下:
#用例1
-
api_name: page_title
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
#用例2
-
api_name: searching
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
#用例3
-
api_name: login
url: http://www.baidu.com/
header = {'Accept': "application/json",'Content-Type': "application/json; charset=utf-8",'Accept-Encoding': "gzip, deflate, br"}
data: {
"status_code": 200
}
测试用例内容如下:
@pytest.mark.parametrize('data', yaml.load(open('data.yml', 'r')))
def test_ddt(data):api_name = data['api_name']url=data['url']header = data['header']res=requests.get(url + api_name, header)assert res.status_code ==data['data']['status_code']
第三种:通过yaml文件获取数据(@pytest.fixture)
@pytest.fixture()
def login(request):name = request.paramprint(f"== 账号是:{name} ==")return namedata = ["pyy1", "polo"]@pytest.mark.parametrize("login", data, indirect=True)
def test_name(login):print(f" 测试用例的登录账号是:{login} ")
@pytest.fixture()
def logins(request):param = request.paramprint(f"账号是:{param['username']},密码是:{param['pwd']}")return paramdata = [ {"username": "name1", "pwd": "pwd1"}, {"username": "name2", "pwd": "pwd2"} ]@pytest.mark.parametrize("logins", data, indirect=True)
def test_name_pwd(logins):print(f"账号是:{logins['username']},密码是:{logins['pwd']}")
# 多个fixture
@pytest.fixture(scope="module")
def input_user(request):user = request.paramprint("登录账户:%s" % user)return user@pytest.fixture(scope="module")
def input_psw(request):psw = request.paramprint("登录密码:%s" % psw)return pswdata = [("name1", "pwd1"), ("name2", "pwd2")]@pytest.mark.parametrize("input_user,input_psw", data, indirect=True)
def test_more_fixture(input_user, input_psw):print("fixture返回的内容:", input_user, input_psw)name = ["name1", "name2"]
pwd = ["pwd1", "pwd2"]@pytest.mark.parametrize("input_user", name, indirect=True)
@pytest.mark.parametrize("input_psw", pwd, indirect=True)
def test_more_fixture(input_user, input_psw):print("fixture返回的内容:", input_user, input_psw)
资料获取方法
【留言777】
各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~