码迷,mamicode.com
首页 > 其他好文 > 详细

Pytest测试框架(2)

时间:2021-05-24 00:42:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:int   表达式   exp   测试方法   eva   strong   __name__   方法   返回   

pytest参数化与数据驱动实现——

1. 使用@pytest.mark.parametrize进行参数化和数据驱动

import pytest

@pytest.mark.parametrize("test_input, expected", [(‘3+5‘, 8), (‘1+5‘, 6), (‘3-5‘, -2),])

def test_eval(test_input, expected):

  assert eval(test_input) == expected  # eval(str)将字符串转换为表达式

if __name__ == ‘__main__‘:

  pytest.main()

2. 传递数据并参数化 (场景:fixture方法里准备测试数据和前置依赖方法,在测试方法里参数化,测试方法调用准备数据和前置方法)

import pytest

test_user_data = [ {‘user‘: ‘linda‘, ‘password‘: ‘123456‘}, {‘user‘: ‘lily‘, ‘password‘: ‘123456‘}, {‘user‘: ‘Tom‘, ‘password‘: ‘123456‘}, {‘user‘: ‘Tom‘, ‘password‘: ‘‘}]

@pytest.fixture(scope=‘module‘)
def login_r(request):
  user = request.param[‘user‘]   // 通过dict形式,虽传递是一个参数,但通过key的方式可达到传递多个参数的效果

  pwd=request.param[‘password‘]
  print(‘打开首页登录 用户%s 密码%s‘ % user % pwd)

  if pwd:

    return True

  else:

    return False

# 这是pytest的参数化驱动。indirect=True 是把login当作函数去执行
@pytest.mark.parametrize(‘login_r‘, test_user_data, indirect=True)

def test_login(login_r):   //登录用例

  a = login_r
  print(‘测试用例中login的返回值 %s‘ % a)
  assert a,’失败原因:密码为空‘

 3. 测试用例中用到多个参数化的fixture (登录方法参数化、搜索关键词参数化)

# 从下往上执行

# 两组参数进行组合测试,共 m*n组数据,运行m*n次

@pytest.mark.parametrize(‘query_param‘, test_user_data1, indirect=True)

@pytest.mark.parametrize(‘login_r‘, test_user_data, indirect=True)

def test_login(login_r,query_param):   

 

Pytest测试框架(2)

标签:int   表达式   exp   测试方法   eva   strong   __name__   方法   返回   

原文地址:https://www.cnblogs.com/sunnyday21/p/14741636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!