Python自动化测试框架之unittest使用详解

这篇具有很好参考价值的文章主要介绍了Python自动化测试框架之unittest使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unittest是Python自动化测试框架之一,提供了一系列测试工具和接口,支持单元测试、功能测试、集成测试等多种测试类型。unittest使用面向对象的思想实现测试用例的编写和管理,可以方便地扩展和定制测试框架,支持多种测试结果输出格式

1 unittest框架

unittest 是python 的单元测试框架,它主要有以下作用:

提供用例组织与执行:当你的测试用例只有几条时,可以不必考虑用例的组织,但是,当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,此时需要考虑用例的规范与组织问题了。单元测试框架就是来解决这个问题的。

提供丰富的比较方法:在用例执行完之后都需要将实际结果与预期结果进行比较(断言),从而断定用例是否可以顺利通过。单元测试一般会提供丰富的断言方法。例如,判断相等/不相等、包含/不包含、True/False等断言方法。

提供丰富的日志:当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。例如,总的执行时间,失败用例数,成功用例数等。

unittest里面有四个很重要的概念,test fixture,test case,test suite,test runner。

Test Fixture

对一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖setUp()和tearDown()方法来实现。

setUp()方法可以进行测试环境的搭建,比如获取待测试浏览器的驱动,或者如果测试中需要访问数据库,那么可以在setUp()中通过建立数据库连接来进行初始化。

tearDown()方法进行环境的销毁,可以进行关闭浏览器,关闭数据库连接,清除数据库中产生的数据等操作;Test Case

一个TestCase的实例就是一个测试用例。测试用例就是一个完整的测试流程,包括测试前准备环境的搭建(setUp)、实现测试过程的代码,以及测试后环境的还原(tearDown)。单元测试(unit test)的本质就在这里,一个测试用例就是一个完整的测试单元,可以对某一个功能进行验证。Test Suite

一个功能的验证往往需要多个测试用例,可以把多个测试用例集合在一起执行,这个就产生了测试套件TestSuite的概念。Test Suit用来将多个测试用例组装在一起;

Test Runner测试的执行也是非常重要的一个概念,在unittest框架中,通过TextTestRunner类提供的run()方法来执行test suite/test case。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

from selenium import webdriver

import unittest

import time

import os

from selenium.common.exceptions import NoAlertPresentException

from selenium.common.exceptions import NoSuchElementException

from selenium.webdriver.common.by import By

class Baidu1(unittest.TestCase):

    def setUp(self):

        print("-----setUp-----")

        self.driver = webdriver.Chrome()

        self.url = "https://www.baidu.com/"

        self.driver.maximize_window()

        time.sleep(3)

    def tearDown(self):

        print("-----tearDown-----")

        self.driver.quit()

    def test_hao(self):

        print("111111111")

        driver = self.driver

        url = self.url

        driver.get(url)

        driver.find_element(By.LINK_TEXT,"hao123").click()

        time.sleep(6)

    def test_hbaidu(self):

        print("22222222")

        driver = self.driver

        url = self.url

        driver.get(url)

        driver.find_element(By.ID,"kw").send_keys("unittest")

        driver.find_element(By.ID,"su").submit()

        time.sleep(5)

        print(driver.title)

        # self.assertNotEqual(driver.title, "百度一下_百度搜索", msg="不相等")

        # self.assertTrue("beautiful"=="beauty", msg="Not Equal!")

        time.sleep(6)

    def saveScreenAsPhoto(self, driver, file_name):

        if not os.path.exists("./image"):

            os.makedirs("./image")

        now = time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time()))

        driver.get_screenshot_as_file("./image/" + now + "-" + file_name)

        time.sleep(3)

        print("3333333")

if __name__ == "__main__":

    unittest.main()

这个脚本中的类 Baidu1 继承了unittest.TestCase类,所以它使用了unittest框架来组织测试用例(TestCase)。

setUp() 和 setDown() 是unittest框架中的测试固件。

以test_开头命名的方法,是测试方法,在运行整个类的时候会默认执行。

unittest提供了全局的main()方法,使用它可以方便地将一个单元测试模块变成可以直接运行的测试脚

本。main()方法搜索所有包含在该模块中以”test"命名的测试方法,并自动执行他们。

2 批量执行脚本

2.1 构建测试套件

当我们增加了被测试功能和相应的测试用例之后,我们就需要把多个测试用例组织在一起执行,这就需要用到上文中提到的测试套件Test Suite

假设我们已经编写了testbaidu1.py,testbaidu2.py两个文件

testbaidu2.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

from selenium import webdriver

import unittest

import time

from selenium.common.exceptions import NoAlertPresentException

from selenium.common.exceptions import NoSuchElementException

from selenium.webdriver.common.by import By

class Baidu2 (unittest.TestCase) :

    def setUp(self):

        self.driver = webdriver.Chrome()

        self.driver.implicitly_wait(30)

        self.base_url = "http://www.baidu.com/"

        self.driver.maximize_window()

        self.verificationErrors=[]

        self.accept_next_alert = True

    def tearDown(self):

        self.driver.quit()

        self.assertEqual([], self.verificationErrors)

    def test_hao(self):

        driver = self.driver

        driver.get(self.base_url)

        driver.find_element(By.LINK_TEXT,"新闻").click()

        文章来源地址https://www.toymoban.com/news/detail-468264.html

到了这里,关于Python自动化测试框架之unittest使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python自动化测试框架:Pytest和Unittest的区别

    pytest和unittest是Python中常用的两种测试框架,它们都可以用来编写和执行测试用例,但两者在很多方面都有所不同。本文将从不同的角度来论述这些区别,以帮助大家更好地理解pytest和unittest。 1. 原理 pytest是基于Python的assert语句和Python的自省特性实现测试框架,其原理是基于

    2024年02月10日
    浏览(40)
  • Python 自动化测试框架unittest与pytest的区别

    📌 博客主页: 美团程序员 📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识! 📌 如果你也想学习软件测试,文末卡片有我的交流群632880530,加入我们,一起交流和学习! 引言 前面一篇文章Python单元测试框架介绍已经介绍了python单元测

    2024年02月13日
    浏览(33)
  • 【Python+requests+unittest+excel】实现接口自动化测试框架

    一、框架结构:  工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求(runmethon.py) 3.2 封装mock(mock.py) 四、数据操作包 operation_data 4.1 获取excel单元格中的内容(get_data.py)   4.2 获取excel中每个列(data_config.py) 4.3 解决数据依赖(dependent.py ) 五、工具类包 to

    2024年02月15日
    浏览(25)
  • 自动化测试——unittest框架(单元测试)

    目录 一、unittest框架解析 1.1unittest的5个重要概念 1.1测试用例的编写及代码 1.2断言 1.3用例的执行顺序 1.4测试用例综合管理框架 1.5HTML报告生成 参考博文 unittest 单元测试提供了创建测试用例,测试套件以及批量执行的方案, unittest 在安装pyhton 以后就直接自带了,直接import

    2024年01月17日
    浏览(36)
  • 自动化测试框架之unittest

    unittest 是python 的单元测试框架,它主要有以下作用: 提供用例组织与执行 :当你的测试用例只有几条时,可以不必考虑用例的组织,但是,当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,此时需要考虑用例的规范与组织问题了

    2024年02月01日
    浏览(28)
  • unittest自动化测试框架详解

    目录 一、单元测试的定义 二、unittest框架及原理 三、unittest的断言 四、TestCase测试用例 五、TestFixure测试夹具 六、TestSuite测试套件 七、TestRunner执行用例 ​ 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测

    2024年02月04日
    浏览(32)
  • (六)Selenium自动化测试实战—unittest框架

    上一篇:(五)Selenium自动化测试实战—PO模式_要开朗的spookypop的博客-CSDN博客 先看下代码的运行效果: 运行自动化测试代码 unittest是python单元测试框架,它提供了一组丰富的工具来构建和运行测试,可以满足日常做自动化测试的需求。 上一篇详细的介绍了如何用PO模式写登

    2023年04月14日
    浏览(30)
  • 自动化测试框架unittest与pytest的区别!

    前面文章已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插

    2024年02月15日
    浏览(28)
  • 自动化测试概念(以及部分框架,selenium,unittest)

      能够代替手工测试的方法和工具都可以称为自动化测试      例如   针对不同的测试对象   web自动化   app自动化  接口自动化      针对不同的测试类型   功能测试自动化   链接测试自动化   性能测试自动化   安全测试自动化      实施自动化测试的目的在于

    2024年03月14日
    浏览(36)
  • Selenium+Unittest自动化测试框架实战(框架源码都给你)

    目录 前言 项目框架 首先管理时间 !/usr/bin/env python3 -- coding:utf-8 -- 配置文件 conf.py config.ini# 读取配置文件 记录操作日志 简单理解POM模型 管理页面元素 封装Selenium基类 创建页面对象 熟悉unittest测试框架 编写测试用例 执行用例 生成测试报告 执行并生成报告 发送结果邮件 se

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包