自动化冒烟测试unittest,pytest哪家强?

本文讲述以下几个内容:

1、Unittest 如何组织冒烟用例
2、Pytest 组织冒烟测试
3、Pytest 执行unittest冒烟用例

环境准备:

Python 3.6.4
Pytest 5.0.1

项目目录:

smoke_testing_demo
test_case
__init__.py
test_case_with_unittest.py
test_case_with_pytest.py
run_unittest_smoke_testing.py

一、Unittest如何组织冒烟用例

  • 当 import unittest 时 ,会自动导入TestLoader类
  • TestLoader这个类下,封装了 5 种组织用例的方法
  • 本文主要讲解 loadTestsFromNames
  • 更多Uittest组织用例方法可参考《Unittest组织用例的姿势》这篇博文,链接在文末

loadTestsFromNames 方法简介

$ loader.py 该文件在python3.7已不存在,建议使用python3.64 查看使用方法

class TestLoader(object):
"""
该类负责根据各种标准加载测试并将它们包装在TestSuite中
"""

def loadTestsFromNames(self, names, module=None):
"""
返回给定的一组用例名的测试用例的套件
""" 

loadTestsFromNames 组织冒烟用例

测试用例

$ test_case_with_unittest.py

#!/usr/bin/env python3
# encoding:utf-8

import unittest

class TestUittestCase(unittest.TestCase):

def test_case_with_unittest_1(self):
'''冒烟测试用例'''
print('I am Smoke Testing ')

def test_case_with_unittest_2(self):
pass


if __name__ == '__main__':
unittest.main(verbosity=2)

$ test_case_with_unittest2.py

#!/usr/bin/env python3
# encoding:utf-8

import unittest

class TestUittestCase2(unittest.TestCase):

def test_case_with_unittest_3(self):
'''冒烟测试用例'''
print('I am Smoke Testing ')

def test_case_with_unittest_4(self):
pass


if __name__ == '__main__':
unittest.main(verbosity=2)

冒烟测试用例集

$ run_unittest_smoke_testing.py

#!/usr/bin/env python3
# encoding:utf-8

import unittest

cases = [
'test_case.test_case_with_unittest2.TestUittestCase2.test_case_with_unittest_3',
'test_case.test_case_with_unittest.TestUittestCase.test_case_with_unittest_1'
]
test_suit = unittest.TestLoader().loadTestsFromNames(cases)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(test_suit)

运行结果

test_case_with_unittest_3(test_case.test_case_with_unittest2.TestUittestCase2)
冒烟测试 ... ok
test_case_with_unittest_1 (test_case.test_case_with_unittest.TestUittestCase)
冒烟测试 ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s

小结:

  • 通过loadTestsFromNames 可以从不同的模块组织特定的用例集
  • 使用loadTestsFromNames这个方法,需要传入一个数组
  • 数组里面里面的元素必须是字符串
  • 数组元素传入格式:'moudleName.testCaseClassName.testCaseName'
  • 执行用例是根据数组元素的的顺序执行

二、Pytest 组织冒烟测试

  • pytest 提供了测试用例标记机制
  • 一个测试用例允许被多个@pytest.mark进行标记
  • 同一个@pytest.mark可以标记多个测试用例
  • pytest.mark常用于冒烟测试用例组织

pytest.mark 组织冒烟用例

测试用例

$ run_unittest_smoke_testing.py

#!/usr/bin/env python3
# encoding:utf-8

import pytest

@pytest.mark.test_env
def test_case_1():
pass

@pytest.mark.test_env
@pytest.mark.smoke
def test_case_2():
''' 冒烟用例'''
pass

cd 进入 /test_case目录,

使用命令行运行 test_case_with_pytest.py

pytest test_case_with_pytest.py -v -m smoke

运行结果

collected 2 items
test_case_with_pytest.py::test_case_1 PASSED
test_case_with_pytest.py::test_case_2 PASSED
=========================== 2 passed in 0.01 seconds ===========================

三、Pytest 执行 Unittest冒烟用例

Pytest测试框架是兼容Python自带的Unittest

修改test_case_with_unittest2.py
 $ test_case_with_unittest2.py
#!/usr/bin/env python3
# encoding:utf-8
import unittest
import pytest
class TestUittestCase2(unittest.TestCase):
@pytest.mark.smoke
def test_case_with_unittest_3(self):
'''冒烟测试用例'''
print('I am Smoke Testing ')
def test_case_with_unittest_4(self):
pass

if __name__ =='__main__':
unittest.main(verbosity=2)

命令行运行 test_case_with_unittest2.py

pytest test_case_with_unittest2.py -v -m smoke

运行结果

 collected 2 items / 1 deselected / 1 selected
test_case_with_unittest2.py::TestUittestCase2::test_case_with_unittest_3 PASSED [100%]
============== 1 passed, 1 deselected, 1 warnings in 0.01 seconds ==============

总结:
1、Uittest组织冒烟用例,需通过loadTestsFromNames在不同的测试模块里指定测试用例,组装成test suit(测试套件)后,给TextTestRunner运行

2、Pytest组织冒烟用例,只需给测试用例加上@pytest.mark.key ,使用命令行pytest -m key test_case.py 即可

自动化冒烟测试 Unittest , Pytest 哪家强?

笔者个人见解:

  • 使用Uittest组织冒烟测试,关注点有至少有两个
    1、当编写新功能的冒烟测试,需要去维护冒烟测试用例集
    2、合并代码时,如果有两个人同时修改了这个冒烟用例集,还要解决冲突,防止遗漏冒烟用例
  • 使用Pytest组织冒烟测试,关注点在于用例的本身
    当编写新功能的冒烟测试,我只需在给用例加一个编写用例人员约定好的@pytest.mark,例如@pytest.mark.smoke

学习安排上

 作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。【保证100%免费】

在这里插入图片描述

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接口自动化测试框架是一种用于管理和执行接口测试用例的工具。Python语言结合pytest和requests库可以很方便地实现接口自动化测试框架。 首先,你需要安装pytest和requests库。可以使用以下命令安装它们: ``` pip install pytest pip install requests ``` 接下来,创建一个测试用例文件,例如`test_api.py`,并导入所需的库: ```python import pytest import requests ``` 然后,编写测试用例函数。使用pytest的装饰器`@pytest.mark.parametrize`可以方便地实现参数化测试。 ```python @pytest.mark.parametrize("url, expected_status_code", [ ("https://api.example.com/users", 200), ("https://api.example.com/posts", 200), ("https://api.example.com/comments", 200), ]) def test_api(url, expected_status_code): response = requests.get(url) assert response.status_code == expected_status_code ``` 在上面的示例中,我们定义了三个测试用例函数,每个测试用例函数都会发送一个GET请求并断言响应的状态码是否与期望的状态码一致。 最后,使用pytest命令来运行测试用例: ``` pytest test_api.py ``` pytest会自动发现并执行所有以`test_`开头的函数作为测试用例。 通过以上步骤,你就可以使用Python+pytest+requests构建一个简单的接口自动化测试框架,并使用unittest风格的方式管理测试用例。当然,你还可以根据实际需求添加更多的功能,例如报告生成、测试数据管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值