一文搞懂Python自动化测试框架!

1145 篇文章 4 订阅
1121 篇文章 3 订阅

一文搞懂Python自动化测试框架

如果你选用python做自动化测试,那么python测试框架的相关知识你必须要了解下。

首先我们先学习一下框架的基本知识。

什么是框架(百度百科)?

框架( Framwork )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。它定义了整体结构,类和对象的分割,各部分的主要责任,类和对象怎么协作,以及控制流程。框架预定义了这些设计参数,以便于应用设计者或实现者能集中精力于应用本身的特定细节。

什么是自动化测试框架?

自动化测试框架是一个工具脚本集合,用于组织和管理自动化基础功能(打开浏览器、鼠标点击、登录等)自动化测试用例、提供测试结果统计报告。

自动化测试框架能够提供可靠的测试服务,对于新需求能够快速扩展,能够让测试工程师简单高效的完成自动化测试任务。

测试框架的优点如下
  1. 代码复用 ,将基础的测试代码封装,从而降低代码的复杂性。
  2. 提高维护效率,有效组织和管理测试脚本。
  3. 快速实现项目的自动化测试,不用从0开始,一般测试框架完成后,其他类似程序也可以快速复用。
  4. 输出各种美观易懂的测试报告。
一个典型的自动化测试框架目录

典型自动化测试框架目录

  • config(配置文件目录):存放所有使用的配置文件,实现配置与代码分离。
  • common(公共函数):公共函数、方法以及通用操作的管理。
  • data(测试数据):将所有的用例参数化使用的文件放到这里,一般可采用xlsx、csv、xml等格式。实现数据与代码分离。
  • drivers(驱动目录):一般存放浏览器驱动,如如Chromedriver等。
  • logs(日志目录):日志记录和管理功能,存放运行时日志和错误日志error log等。
  • testcase(测试用例):测试用例管理功能,可以分模块编写,建相应的目录。
  • report(测试报告):管理和存放程序运行后生成的测试报告,一般可有html报告、excel报告等。

python主流测试框架

unittest

unittest框架是python内置的单元测试框架,unittest的设计灵感最初来源于Junit以及其他语言中具有共同特征的单元框架。它能编写组织用例、执行用例,还可输出测试报告等。

它具有如下优点:

  • 使用断言判断返回布尔值来判断期望值和实际值的差异。
  • 可以构建共同的初始化变量或实例。
  • 框架结构可以组织用例批量运行。

为了实现这些,unittest产生了以下几个概念:

  • test fixture: 一个test fixture 表示执行一个或多个测试前的准备工作,以及执行完成后清理工作。例如:创建临时或代理数据库或目录,或者是一个启动服务器进程。
  • test case: 一个test case是一个独立的测试单元,它检查特定输入是否响应特定的输出,unittest提供了一个基本类——TestCase,这个类用于创建一个或多个test case。
  • test suite: 一个test suite是test cases、或test suites、或者两者的一个集合,它用于把想执行tests放在一起。
  • test runner: 一个test runner 是由两部分成分:合理安排tests的执行、提供给user输出结果。runner可以用一个图形界面、文本、或者是一个特殊的值,代表tests执行的结果。

代码示例:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()
pytest

很好的强大的单元测试框架,实际上广泛使用在自动化单元、接口、功能等测试。

如果你的项目比较小、复杂度比较低,Pytest是最适合的自动化测试平台。非常多的Python开发者都喜欢它,他们大部分用它来进行单元测试。

Pytest最好的特性之一是,它提供了测试用例的详细失败信息,使得开发者可以快速准确地改正问题。它兼容最新版本的Python。它还兼容unittest、doctest和nose,开箱即用。它还有包含更多功能的插件和多样化的现有测试技术和测试用例。

脚本执行示例:

# content of test_sample.py
def inc(x):
    return x + 1


def test_answer():
    assert inc(3) == 5

执行后的信息:

$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-5.x.y, py-1.x.y, pluggy-0.x.y
cachedir: $PYTHON_PREFIX/.pytest_cache
rootdir: $REGENDOC_TMPDIR
collected 1 item

test_sample.py F                                                     [100%]

================================= FAILURES =================================
_______________________________ test_answer ________________________________

    def test_answer():
>       assert inc(3) == 5
E       assert 4 == 5
E        +  where 4 = inc(3)

test_sample.py:6: AssertionError
========================= 1 failed in 0.12 seconds =========================
Robot Framework

Robot Framework- 通用的python测试框架,提供一个图形用户界面,方便管理和编辑测试用例,易于上手,生成的报告比较好看,支持关键字和数据等驱动。

Robot Framework是独立于操作系统和应用程序,支持跨平台,例如Windows、MacOS和Linux。这个产品是由世界上一些著名的测试人员创建的,拥有关键词驱动方案。它有丰富的工具和库,使得这个框架非常先进和健壮。

示例:

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作封装在对象中,通过对象之间的交互实现程序的设计和开发。下面是一些关键概念,帮助你更好地理解Python面向对象编程。 1. 类(Class):类是对象的蓝图或模板,描述了对象的属性和行为。它定义了对象的特征和方法。例如,我们可以定义一个名为"Car"的类来表示汽车,其中包含属性(如颜色、型号)和方法(如加速、刹车)。 2. 对象(Object):对象是类的实例,是具体的实体。通过实例化类,我们可以创建一个对象。例如,我们可以创建一个名为"my_car"的对象,它是基于"Car"类的实例。 3. 属性(Attribute):属性是对象的特征,用于描述对象的状态。每个对象都可以具有一组属性。例如,"Car"类的属性可以包括颜色、型号等。 4. 方法(Method):方法是对象的行为,用于定义对象的操作。每个对象都可以具有一组方法。例如,"Car"类的方法可以包括加速、刹车等。 5. 继承(Inheritance):继承是一种机制,允许我们创建一个新类(称为子类),从现有类(称为父类)继承属性和方法。子类可以扩展或修改父类的功能。继承可以实现代码重用和层次化设计。 6. 多态(Polymorphism):多态是一种特性,允许不同类的对象对同一方法做出不同的响应。多态提高了代码的灵活性和可扩展性。 7. 封装(Encapsulation):封装是一种将数据和操作封装在对象中的机制,隐藏了对象的内部实现细节,只暴露必要的接口给外部使用。这样可以保护数据的安全性,提供了更好的模块化和代码复用性。 通过理解这些概念,你可以更好地掌握Python面向对象编程。在实践中,你可以使用类来创建对象,操作对象的属性和调用对象的方法,通过继承和多态实现代码的灵活性和可扩展性,通过封装保护数据的安全性和提高代码的可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值