Python单元测试框架-UnitTest以及测试报告

时间主题9.4(周三)20:00python单元测试框架

在周三的公众号文中,芒果给大家提前剧透了分层自动化测试过程中最重要的一环——单元测试。晚上的测试运维直播课程中,芒果带着大家一起了解了Python的单元测试框架——UnitTest,这里我们来做个小总结。UnitTest介绍先来回顾一下单元测试的概念:指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如java的Junit、TestNG,python的unittest等。再来看看UnitTest:unittest是Python的内建模块,是Python单元测试的事实标准。 unittest不仅可以适用于单元测试,还可以适用web自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。几个概念在开始使用UnitTest执行单元测试之前我们先了解几个概念:test case:测试用例,可以通过创建unitest.TestCase类的子类创建一个测试用例。test fixture:测试夹具,包含执行测试用例前的测试准备工作、测试用例执行后的清理工作(分别对应TestCase中的setUp()和tearDown()方法),测试准备和测试清理的目的是保证每个测试用例执行前后的系统状态一致。test suite:测试套件,是测试用例、测试套件或者两者的集合,用来将有关联的测试项打包。test runner:负责执行测试并将结果展示给用户,可以展示图形或文字形式(unittest.TextTestRunner)的结果,或者返回一个错误码标识测试用例的执行结果。testrunner提供了一个方法run(),接受一个unittest.TestSuite或unittest.TestCase实例作为参数,执行对应测试项目后返回测试结果unittest.TestResult对象。UnitTest处理流程在对于几个基本的概念有所了解之后,我们一起来看看UnitTest处理流程是如何进行的:

使用unitest.TestCase类的子类创建一个测试用例类,其中可以包含多个测试用例,并且利用estCase中的setUp、tearDown、setUpClass、tearDownClass等方法处理好初始化以及环境清理工作。#被测试函数-腾讯课程课程搜索测试def courseSearch(driver,searchKey):#打开腾讯课堂driver.get("https://ke.qq.com/")#搜索对应课程driver.find_element_by_id("js_keyword").send_keys(searchKey)time.sleep(2)driver.find_element_by_id("js_search").click()time.sleep(2)#查询结果keyElement = driver.find_element_by_css_selector("div.kw-outer>span.bold")#对比实际结果与预期结果if keyElement.text.lower() == searchKey.lower():return Trueelse:return False#测试用例类class CourseSearchTest(unittest.TestCase):#环境构建-启动浏览器def setUp(self):self.driver = webdriver.Chrome()#第一个测试用例def test_01(self):result = courseSearch(self.driver, "testops")self.add_img()self.assertTrue(result)#print(result)#第二个测试用例def test_02(self):result = courseSearch(self.driver, "软件测试")self.add_img()self.assertTrue(result)#print(result)#环境清理-关闭浏览器def tearDown(self):self.driver.quit()然后就是用例的加载问题了(当然UnitTest的用例加载方式有更多,这里仅仅提供几种简单的加载方式):#最简单的用例加载与执行unittest.main()#用例加载方式一suite = unittest.TestSuite()suite.addTest(CourseSearchTest("test_01"))suite.addTest(CourseSearchTest("test_02"))# 用例加载方式二suite = unittest.TestSuite()suite.addTest(unittest.TestLoader().loadTestsFromTestCase(CourseSearchTest))#用例加载方式三suite = unittest.TestSuite()tests = ["test_course_search.CourseSearchTest.test_01","test_course_search.CourseSearchTest.test_02"]suite.addTest(unittest.TestLoader().loadTestsFromNames(tests))#用例加载方式四suite = unittest.defaultTestLoader.discover(os.getcwd(),pattern="test_course_search*.py")接着是执行,一般使用UnitTest所带的TextTestRunner处理执行,它会在执行结束之后给TestResult赋值,我们可以通过TestResult来获取相关结果。#执行用例unittest.TextTestRunner().run(suite)测试报告以及其优化当然除了可以根据TestResult查看测试结果,我们还可以利用扩展模块HTMLTestRunner类来生成测试HTML版的测试报告。#HTML测试报告fp = open("restult_course_search.html","wb")runner = HTMLTestRunner.HTMLTestRunner(stream=fp,verbosity=2,title="腾讯课堂课程搜索测试",description="课程搜索以及结果判断")runner.run(suite)

这里芒果顺便给大家介绍一个开源的优化版测试报告HTMLTestRunner_cn。GitHub地址:https://github.com/GoverSky/HTMLTestRunner_cn

后续的啰啰嗦嗦当然除了课程内容除了这些基本的介绍,芒果还给大家介绍了,关于UnitTest各种断言方法、用例过滤方式、Django项目的单元测试,以及关于优化版的测试报告的使用。

(0)

相关推荐

  • 课件6——单元测试框架unittest

    单元测试框架unittest 单元测试 单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单 ...

  • 接口自动化

    一.自动化分类 (1)接口自动化 > python/java+requests+unittest框架来实现 > python/java+RF(RobotFramework)框架来实现--对 ...

  • 自动化搭建环境及基础理论

    在dos命令中输入python,在dos命令中输入pip Pip是Python官方推荐的包管理工具,提供了对Python包的查找.下载.安装.卸载的功能,属于python的一部分. Python3.0 ...

  • selenium+python自动化90-多线程生成报告(BeautifulReport)

    前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生产一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备 ...

  • 如何编写接口测试用例?测试工程师必备技能!

    自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心.如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了. 那么,接口测试用例应该怎么 ...

  • selenium+python自动化81-报告优化

    一. 优化html报告 为了满足小伙伴的各种变态需求,为了装逼提示逼格,为了让报告更加高大上,测试报告做了以下优化: - 测试报告中文显示,优化一些断言失败正文乱码问题 - 新增错误和失败截图,展示到 ...

  • Python 接口自动化测试之数据驱动(DDT)

    在接口测试中,一个接口往往需要有多组数据进行测试,以验证接口的正确性.这样就涉及到一个问题,是不是需要编写多个测试用例来实现呢?比如一个登陆接口,登陆成功的一组数据.登陆密码错误的一组数据.登陆账号错 ...

  • Python单元测试框架覆盖率-Coverage

    时间主题9.18(周三)20:00自动化测试框架搭建 在之前的公开课跟公众号文中,我们提到了单元测试覆盖率,今天我们一起来做个小总结. 覆盖率介绍首先来看看什么是单元测试覆盖率:覆盖率是用来衡量单元测 ...

  • 分享一个c语言单元测试框架

    来源:https://www.cnblogs.com/pingwen/p/9216004.html 1.简介 CuTest是一款微小的C语言单元测试框,非常简洁,只有2个文件,CuTest.c和CuT ...

  • Python GUI框架有哪些?Linux入门

    GUI,全称为图形用户界面,又称为图形用户接口,是一种人与计算机通信的界面显示格式.那么Python常用GUI框架有哪些呢?我们来看看具体介绍. Tkinter:一个轻量级的跨平台图形用户界面开发工具 ...

  • 15个最受欢迎的Python开源框架

    编辑推荐: 本文来源博客园,主要通过示例演示15个最受欢迎的Python开源框架,希望对您的学习有所帮助. 一.Django: Python Web应用开发框架 Django是一个开放源代码的Web应 ...

  • Python开源框架有哪些?这几个最常见!

    当我们学习python的时候,会遇到很多开源框架,这些框架可以实现很多事情,在不同岗位上都具有重要作用.面对python开源框架,你最中意哪一个呢? 1.Django: Python Web应用开发框 ...

  • Python爬虫框架有哪些?这几种最常见!

    Python之所以被称为"爬虫"的首选语言,主要原因是因为Python拥有很多爬虫框架,不仅功能齐全.优点多,而且可以帮助程序员以更少的代码实现更多的功能,让工作变得更加轻松便利. ...

  • 什么是Python web2py框架?看完就明白了!

    众所周知,Python的框架有很多,除了我们经常提到的Django.flask框架之外,Python还有很多框架是我们没有介绍过的,比如说web2py框架,那么什么是web2py框架呢?它有什么特性? ...

  • 7款好用的Python爬虫框架!

    Python是网络爬虫的首选语言,在爬虫领域有着独特的优势和用途,而且Python还拥有很多爬虫框架,那么你知道哪个Python爬虫框架最高效吗?这几个你一定要知道. 1.Scrapy Scrapy是 ...