本文介绍: pytest 还能对执行过程中产生的 Exception 及 Warnning 进行断言,但这些情况在我们测试中很少会用到,所以不做过多阐述。

前言

断言是完整的测试用例中不可或缺的因素,用例只有加入断言,将实际结果与预期结果进行比对,才能判断它的通过与否。

unittest 框架提供了其特有的断言方式,如:assertEqual、assertTrueassertIn等,pytest 同样有自己的断言方式,即使用assert进行断言。

assert

pytest使用python源生态assert字段进行断言。

常用断言方式

pytest常用的断言方式如下:

  • 判断是否相等,assert Actual(实际结果) == Expected(期望结果)
  • 判断是否不相等,assert Actual != Expected,其他如 &gt;、<、&gt;=、<= 都可直接使用。
  • 判断xx是否为真,assert xx
  • 判断xx是否不为真,assert not xx
  • 判断b是否包含a,assert a in b
  • 判断b不包含a,assert a not in b

assert 断言的对象可以字符串int、float、listdict、tuple 任一类型。

使用示例

自定义了一个查询所有用户信息接口返回参数格式如下:

{
    "code": 1000,
    "data": [
        {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"},
        {"id": 2, "username": "梅艳芳", "sex": 1, "telephone": "95511", "address": "上海黄浦区"},
        {"id": 3, "username": "陈百强", "sex": 0, "telephone": "10086", "address": "北京海淀区"},
    ]
}

用例断言如下:

def test_get_all_users():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users"
    res = requests.get(url=url).text
    res = json.loads(res)
    # 断言是否相等
    assert res['code'] == 1000
    # 断言返回结果中data是否为True这里其实就是判断是否为空)
    assert res['data']
    
    Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
    # 断言返回结果中data是否包含刘德华的信息
    assert Andy in res['data']

断言通过:

我们修改一下脚本让断言不通过,如下:

def test_get_all_users():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users"
    res = requests.get(url=url).text
    res = json.loads(res)
    # 断言是否相等
    assert res['code'] == 1001
    # 断言返回结果中data是否为True(这里其实就是判断是否为空)
    assert not res['data']
    
    Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
    # 断言返回结果中data是否包含刘德华的信息
    assert Andy not in res['data']

运行结果如下:

可以看到,code 的 Actual 为1000,而 Excepted 为1001,所以断言直接报错,不继续执行后面的代码

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

断言结果添加异常信息

我们可以在断言异常的时候,输出一些提示信息,这样断言报错后,可以方便我们查看原因。

自定义用户信息接口可以查询某个用户的信息,对它编写测试脚本如下:

def test_get_user():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users/1"
    res = requests.get(url=url).text
    res = json.loads(res)
    assert res['code'] == 1000
    assert res['data']['username'] == "张学友", "判断返回是否为张学友,实际返回:{}".format(res['data']['username'])

运行结果如下:

总结

pytest 还能对执行过程中产生的 Exception 及 Warnning 进行断言,但这些情况在我们的测试中很少会用到,所以不做过多阐述。

原文地址:https://blog.csdn.net/qq_43371695/article/details/134668066

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_2021.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注