单元测试工具(连载11)

简介: 单元测试工具(连载11)

4.2 pytest装饰器


pytest的装饰器如表5所示。


5                                                               pytest的装饰器

装饰器

解释

setup_module/teardown_module

在所有测试用例执行之前和之后执行。

setup_function/teardown_function

在每个测试用例之前和之后执行。

setup_class/teardown_class

在当前测试类的开始与结束执行。

setup/treadown

在每个测试方法开始与结束执行。

setup_method/teardown_method

在每个测试方法开始与结束执行,与setup/treadown级别相同。


4.3 pytest 常用命令行选项


Pytest的强大之处在于它可以通过命令行来对测试用例进行控制,比如案例4使用了-s参数,表示在终端中允许测试运行的时候输出某些结果,包括任何符合标准输出信息。由于程序里面有print语句,所以必须使用-s参数。-v参数可以使输出信息更详细,把main语句改为。


pytest.main(["-sv","test_Calculator.py"])


输出结果变为。

[1m============================= test sessionstarts =============================[0m
platform win32 -- Python 3.7.1, pytest-4.0.2,py-1.7.0, pluggy-0.8.0 -- C:\Python37\pythonw.exe
cachedir: .pytest_cache
rootdir: C:\python\unittest, inifile:
[1mcollecting ... [0m[1m
collected 12 items                                                            [0m
test_Calculator.py::TestCalculator::test_base 测试开始
[32mPASSED[0m
test_Calculator.py::TestCalculator::test_max_number[32mPASSED[0m
test_Calculator.py::TestCalculator::test_subs [32mPASSED[0m
test_Calculator.py::TestCalculator::test_mysubs_0 [32mPASSED[0m
test_Calculator.py::TestCalculator::test_mysubs_1 [32mPASSED[0m
test_Calculator.py::TestCalculator::test_mysubs_2 [32mPASSED[0m
test_Calculator.py::TestCalculator::test_multiply [32mPASSED[0m
test_Calculator.py::TestCalculator::test_mymultiply_0[32mPASSED[0m
test_Calculator.py::TestCalculator::test_mymultiply_1[32mPASSED[0m
test_Calculator.py::TestCalculator::test_mymultiply_2[32mPASSED[0m
test_Calculator.py::TestCalculator::test_mymultiply_3[32mPASSED[0m
test_Calculator.py::TestCalculator::test_divide 除数不能为零
[32mPASSED[0m测试结束
[32m[1m========================== 12 passed in0.63 seconds ==========================[0m


明显清晰了很多。对于命令行参数可以通过下面语句获得,在这里不做更多介绍。


C:\Users\Jerry>pytest --help


4.4 pytest 运行并发测试


要让pytest实现并发测试,必须先安装pytest-parallel

pip install pytest-parallel


另外要注意这个插件仅仅支持python3.6版本及以上,而且如果想多进程并发,就必须跑在Unix或者Mac机器上,Windows环境仅仅支持多线程运行。运行时需要指定以下参数。


  • workers (optional) X多进程运行, X是进程数。默认值1


  • tests-per-worker (optional) X. 多线程运行, X是每个worker运行的最大并发线程数。默认值1


案例9:用pytest框架实现并发测试。
#coding=utf-8
import pytest
@pytest.mark.release
class TestClass1(object):
    def test_one(self):
        x = "this"
        assert 'h' in x
    def test_two(self):
        x = "hello"
        assert hasattr(x,'check')
class TestClass2(object):
    def test_one(self):
        x = "this"
        assert 'h' in x
    def test_two(self):
        x = "hello"
        assert hasattr(x,'check')#判断x对象中是否存在name属性'check'
#terminal里输入 pytest TesterTalk.py --workers 2 #指定2个进程并发
#terminal里输入 pytest TesterTalk.py --workers 2 --test-per-worker 3 #指定2个进程并发,每个进程最多运行3个线程。
if __name__ == '__main__':
pytest.main('-sv --workers2 TesterTalk.py')


4.5 配合allure生成pytest 测试报告


pytest可以通过allure生成很漂亮的测试报告,在Windows下配置如下。

  • 配置Java环境(运行allure 需要)
  • 安装powershellWindows 10自带)
  • powershell中输入 Set-ExecutionPolicy RemoteSigned-scope CurrentUser
  • 安装scoop方法:运行 powershell 输入 iex (new-objectnet.webclient).downloadstring('https://get.scoop.sh') 然后根据提示安装即可
  • 安装allure scoop install allure
  • 生成报告:allure serve 测试的xml路径
  • allure open -h 127.0.0.1 -p 8083 .\report\report\


为了方便期间,可以在测试用例同目录建立文件report.bat,内容如下。

allure serve .\report\xml\
allure open -h 127.0.0.1 -p 8083 .\report\report\


1. Features定制

案例10:配合allure生成pytest 测试报告之Features定制。
# -*- coding: utf-8 -*-
import allure
import pytest
from Calculator import calculator
from Util import util
@allure.feature('test_module_01')
@allure.story('test_story_01')
def test_case_01():
   j=calculator(4,2)
   util.AssertEqual(j.myadd(),6)
   util.AssertEqual(j.mysubs(),2)
   util.AssertEqual(j.mymultiply(),8)
   util.AssertEqual(j.mydivide(),2)
@allure.feature('test_module_01')
@allure.story('test_story_02')
def test_case_02():
   j=calculator(9223372036854775808,9223372036854775808)
   util.AssertEqual(j.mymultiply(),85070591730234615865843651857942052864)
if __name__ == '__main__':
   pytest.main(['-s', '-q', '--alluredir', './report/xml'])


测试报告如图31所示。

image.png

31 配合allure生成pytest 测试报告之Features定制


TitleDesc定制

案例11:配合allure生成pytest 测试报告之TitleDesc定制。
# -*- coding: utf-8 -*-
import allure
import pytest
from Calculator import calculator
from Util import util
@allure.feature('test_module_01')
@allure.story('test_story_01')
#test_case_01为用例title
deftest_case_01():
    """
    用例描述:这是用例描述,Test case 01,描述本人
    """
    #注释为用例描述
   j=calculator(9223372036854775808,9223372036854775808)
   util.AssertEqual(j.mymultiply(),85070591730234615865843651857942052864)
if __name__ == '__main__':
   pytest.main(['-sv', '-q', '--alluredir', './report/xml'])


测试报告如图32所示。


image.png

32 配合allure生成pytest 测试报告之TitleDesc定制


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

k=(p+m)t

其中:

k为常数。

p:团队人员质量水平,为单位小时内产生的有效质量,单位为/h;

m:团队方法质量水平,为单位小时内产生的有效质量,单位为/h;

t:为单位质量产品的交付时间,单位为h。


在团队方法质量水平不变,团队人员质量水平提高的情况下,交付时间变短;

在团队人员质量水平不变,团队方法质量水平提高的情况下,交付时间变短;

团队人员质量水平与方法质量水平乘积决定了软件的质量水平,如果这个值变小,则t变大;反之t变小。


例如,当k=4时:

当人员质量水平为1/小时、方法水平为1/小时时,交付时间为2小时。

当人员质量水平为2/小时、方法水平为1/小时时,交付时间为4/3小时。

当人员质量水平为1/小时、方法水平为2/小时时,交付时间为4/3小时。

当人员质量水平为0.5/小时、方法水平为0.5/小时时,交付时间为4小时。

目录
相关文章
|
21天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
27 0
|
2月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
2月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
202 1
|
2月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
2月前
|
测试技术 持续交付
现代软件测试中的自动化工具应用与挑战
随着信息技术的快速发展,软件行业对于质量和效率的要求日益提高,自动化测试工具在软件开发过程中扮演着至关重要的角色。本文将探讨现代软件测试中自动化工具的应用现状以及所面临的挑战,旨在帮助开发人员更好地理解并充分利用这一技术手段。
|
3天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】利用AI辅助工具提高软件测试效率与准确性
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
2月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
1天前
|
IDE 测试技术 持续交付
探索自动化测试工具Selenium的高效应用
【4月更文挑战第29天】 在快速迭代的软件开发过程中,高效的测试策略是确保产品质量的关键。本文将深入探讨如何利用自动化测试工具Selenium来提高软件测试的效率和准确性。通过介绍Selenium的核心功能、脚本编写技巧以及与持续集成环境的集成方法,我们旨在为读者提供一个全面的Selenium应用指南。此外,我们还将讨论常见的问题解决策略,并通过案例分析展示如何有效地运用Selenium进行复杂的Web应用测试。
|
2天前
|
Java 测试技术 数据库连接
软件测试中的自动化工具及其应用
传统的软件测试方法已经不能满足日益增长的软件开发需求,因此自动化测试工具应运而生。本文介绍了几种常用的自动化测试工具,并探讨了它们在软件测试中的应用及优势。
7 0
|
9天前
|
敏捷开发 Java 测试技术
探索自动化测试工具Selenium Grid的高效应用
【4月更文挑战第21天】 随着敏捷开发和持续集成的理念深入人心,自动化测试已成为软件开发过程中不可或缺的一环。本文将深入探讨如何利用Selenium Grid进行高效的自动化测试。通过分析其工作原理,搭建过程,以及在实际项目中的应用案例,揭示Selenium Grid在处理大规模并发测试中的潜力和优势。文章不仅提供了具体的操作步骤,还讨论了优化策略,帮助读者构建更加稳定和高效的自动化测试环境。