我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

接口测试_武浩杰_2021/3/19

[复制链接]
海底月是天上月学员认证 发表于 2021-3-19 17:37:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
pytest
1.文件test_或_test开头
2.类Test开头
3.函数或方法test_开头
import  requests

# 测试用例1:手机号码不正确
def test_register_001():
    url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register"
    cs = {
        "mobilephone": "123",
        "pwd": "123456"
    }
    r=requests.post(url,data =cs)
    assert  r.json()['status'] == 0
测试前置和后置:  模块级:setup_model, teardown_module  
方法级:setup_function ,teardown_function  环境初始化的动作放到前置中,比如登录,准备测试数据,打开浏览器等等
环境清理的动作放到后置中,比如退出登录,关闭浏览器等
def setup_module():
    print("测试前置,模块级别的,整个文件所有用例前执行一次")
def teardown_module():
    print("测试后置,模块级别的,整个文件所有用例执行完执行一次")
def setup_function():
    print("测试前置,函数级别的,每个用例前执行")
def teardown_function():
    print("测试后置,函数级别的,每个用例后执行")

def test_001():
    print("用例1")
def test_002():
    print("用例2")
def test_003():
    print("用例3")
测试前置和后置
    类别级: setup_class . teardown_class
    方法级别 :setup_method. teardown_method

    缺点:
        1.命名必须按照规则来写
        2.使用不灵活,比如类里面有3个用例,2个用例执行时需要前置和后置,
        另1个执行时不需要前置和后置,这个场景无法实现
class Test001: # 类名同Test开头
    def setup_class(self):
        print("测试前置,类级别,类里所有用例前执行一次")
    def teardown_class(self):
        print("测试后置,类级别,类里所有用例执行后执行一次")
    def setup_method(self):
        print("测试前置,方法级别,每个方法前执行")
    def teardown_method(self):
        print("测试后置,方法级别,每个方法后执行")

    def test_001(self):
        print("用例1")
    def test_002(self):
        print("用例2")
    def test_003(self):
        print("用例3")
import pytest

@pytest.fixture(scope="class")
def login():
    print("登录")
    yield
    print("退出登录")

class Test001:
    def test_001(self):
        print("Test001用例1")
    def test_002(self,login):   # 首次使用login的地方执行前置,登录
        print("Test001用例2")
    def test_003(self):
        print("Test001用例3")
    def test_004(self):
        print("Test001用例4")    # 类里用例执行完,执行后置,退出登录
class Test002:
    def test_001(self):
        print("Test002用例1")
    def test_002(self):
        print("Test002用例2")
    def test_003(self,login):   # 首次使用login的地方执行前置,登录
        print("Test002用例3")
    def test_004(self):
        print("Test002用例4")    # 类里用例执行完,执行后置,退出登录
import  pytest

# 登录的测试数据,多组的测试数据,执行同样的用例
# 3组测试数据,每组数据包含用户名,密码
@pytest.fixture(params=[("admin","123"),("root","pwd_123")
    ,("administrator","1234567890")])
def login_data(request): # 固定写法,参数名为request,是pytest中的关键字
    return request.param # 固定写法,用request返回每一组数据
@pytest.fixture(params=[{"user":"admin","pwd":"123"},{"user":"root","pwd":"pwd_123"}])
def login_data2(request):
    return request.param


# 登录的接口测试
#  数据驱动的测试模型
#  test_login 测试步骤/测试逻辑,login_data 测试数据(从外部获取,比如 yaml,csv,xml,数据库中读取)
#  数据与测试逻辑是分离的,同一个测试逻辑可以执行多组的测试数据
def test_login(login_data):
    print("登录的测试数据为:",login_data)     # login_data 可以当作元组来用
    p
rint("登录的用户名为:", login_data[0])
    print("登录的密码为:", login_data[1])

def test_login2(login_data2):
    print("登录的测试数据为:",login_data2)     # login_data2 可以当作字典来用
    print("登录的用户名为:", login_data2["user"])
    print("登录的密码为:", login_data2["pwd"])
'''
pytest mark 标记
    1.跳过用例(有缺陷的用例跳过不执行)
    2.选择部分用例执行,工程中用例规模越来越大,包含界面自动化、接口自动化、性能、冒烟测试
        只想执行冒烟测试的用例,怎么办。
        自定义标记,mark,后面的字符串自己定义的

        自定义标记再pytest.int 中注册下。执行时,加参数:
        -m="smoke" 执行smoke标记的用例
        -m="func or smoke" 执行smoke标记或者带func标记的用例
        -m="func and smoke" 执行smoke标记且带func标记的用例
        -m="func and not smoke" 执行带func标记,但是不执行带smoke标记的用例

'''


import  pytest

version = 'V1R1'


@pytest.mark.smoke # 冒烟用例
def test_001():
    print("用例1")

@pytest.mark.skip("因为xxxx缺陷,该用例执行失败,待缺陷解决后再执行")
def test_002():
    print("用例2")

# 前面的表达式为true时跳过,为false时不跳过
@pytest.mark.skipif(version = 'V1R2',reason="V1R2以上的版本增加的功能,V1R2尚不支持")
def test_003():
    print("用例3")

@pytest.mark.func # 功能用例
def test_004():
    print("用例4")

@pytest.mark.func # 给类上加标记,类中每个用例都带有这个标记
class Test001:
    def test_005(self):
        print("用例5")

    @pytest.mark.smoke #
    def test_006(self):
        print("用例6")
    def test_007(self):
        print("用例7")
    def test_008(self):
        print("用例8")


回复

使用道具 举报

关注0

粉丝0

帖子30

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备20001493号-1 )

版权所有 © 西安菁英教育科技有限公司 2023-2026