3.1 unittest简介

3.1 unittest简介

前言

熟悉java的应该都清楚常见的单元测试框架Junit和TestNG。python里面也有单元测试框架-unittest,相当于是一个python版的junit。
python里面的单元测试框架除了unittest,还有一个pytest框架,这个用的比较少,后面有空再继续分享。

3.1.1 unittest简介

1)先导入unittest
2)用help函数查看源码解析
3)查看描述:Python unit testing framework, based on Erich Gamma's JUnit and KentBeck's Smalltalk testing framework.
     翻译:python的单元测试框架,是基于java的junit测试框架。

 

3.1.2 简单用法

可以把上图的这段代码copy出来,单独运行,看看测试结果。

   Simple usage:

复制代码
import unittestclass IntegerArithmeticTestCase(unittest.TestCase):deftestAdd(self):  ## test method names begin 'test*'             self.assertEqual((1 + 2), 3)             self.assertEqual(0 + 1, 1)        deftestMultiply(self):             self.assertEqual((0 * 10), 0)             self.assertEqual((5 * 8), 40)      if __name__ == '__main__':        unittest.main()
复制代码

1)第一行是导入unittest这个模块
2)class这一行是定义一个测试的类,并继承unittest.TestCase这个类
3)接下来是定义了两个测试case名称:testAdd和testMultiply
4)注释里面有句话很重要,这个要敲下黑板记笔记了:## test method names begin 'test*'  --翻译:测试用例的名称要以test开头
5)然后是断言assert,这里的断言方法是assertEqual-判断两个是否相等,这个断言可以是一个也可以是多个
6)if下面的这个unittest.main()是运行主函数,运行后会看到测试结果(跑了两个用例耗时0.000秒,两个用例都通过):

----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK


3.1.3 小试牛刀

1).上面的两个案例是加法和乘法,我们可以写个case试下减法和除法。
2).有很多小伙伴不知道断言怎么写,断言其实就是拿实际结果和期望结果去对比,对比的方法很多,这里只是举的最简单的一个判断相等的方法。

3).最后运行结果,第二个是失败的,失败原因:AssertionError: 3 != 3.5
F.
======================================================================
FAIL: testDivide (__main__.Test)

这里是测试除法
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:/test/web-project/p.py", line 14, in testDivide
    self.assertEqual(result, hope)
AssertionError: 3 != 3.5
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=1)

 

3.1.4 前置和后置

1)setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
2)tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
3)很多人执行完用例,都不去做数据还原,以致于下一个用例执行失败,这就是不喜欢擦屁股的事情,习惯不好。
4)前置和后置都是非必要的条件,如果没有也可以写pass

 

3.1.5 博客案例

1)打开博客首页为例,写一个简单的case
2)判断title完全等于期望结果
3)运行通过,下面会有一个绿条显示:1 test passed

 

3.1.6 参考代码

复制代码
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC import time import unittest
class Blog(unittest.TestCase):
    def setUp(self):         self.driver = webdriver.Firefox()         self.driver.get("http://www.cnblogs.com/yoyoketang")
    def test_blog(self):         time.sleep(3)         result = EC.title_is(u'上海-悠悠 - 博客园')(self.driver)         print result         self.assertTrue(result)
    def tearDown(self):         self.driver.quit()
if __name__ == "__main__":     unittest.main()
复制代码

转载于:https://www.cnblogs.com/lunvo/p/9183863.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

织梦其他模型使用联动类型地区联动

官方模型的联动类型只能模型是在【独立模型】或者官方默认的【分类信息】模型下使用,其他模型下使用无效,我们来让联动类型支持所有模型。 添加联动地区类型字段 内容模型管理 - 文章模型(或者其他模型) - 添加新字段 字段名称 和 数据类型 千万别搞错了…

linux修改组的选项名字为,Linux用户、组及权限管理浅析

一、用户和组1.用户系统用来认证(Authentication),授权(Authorization),审计(Autition)的帐号。通过登录用户来登录系统。操作系统通过登录不同的用户来调用相对应权限的进程或程序,也可以说,用户是能获取系统资源的权限集合。2.用…

如何在 vue-cli v3.0 中使用 SCSS/SASS

在项目中使用 SCSS/SASS 进行样式编写无疑会节省很多开发样式的时间。关于如何在 vue-cli v3.0 中使用 SCSS/SASS,这里提供三种方案。前提是在使用 vue-cli 生成项目时勾选了 CSS Pre-processors (CSS预处理器),否则无法在项目中直接使用。 方案一&…

使用IntelliJ IDEA进行热部署

最近,在PrimeFaces论坛PrimeFaces IDE Poll中进行了投票,以投票赞成用于开发PrimeFaces应用程序的最佳IDE。 最多人投票支持NetBeans。 NetBeans和Eclipse是免费的IDE。 我最喜欢的IDE IntelliJ IDEA Ultimate不是免费的,我认为这就是为什么在…

创梦天地关嵩:借力腾讯云,打造文娱新生态——云+未来峰会回顾

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 今年腾讯云未来峰会主题的关键词是“焕启”,这是包含无限希望的两个字,让人倍感振奋。“焕启”是什么意思?在我的理解中,“焕启”本身就是激活,激…

领域模型学习笔记

别在领域模型迷失了自己转载于:https://www.cnblogs.com/mySerilBlog/p/9914375.html

【缓存清理工具】缓存清理软件_电脑缓存清理软件

产品介绍 有很多种比如来自网页和windows等,缓存如果不经常清理会使你的机器运行速度变慢,缓存清理工具可以帮你最多程度的清理垃圾文件而且速度也很快,有了它的帮助让你爱机清理彻底,运行更加顺畅!主要能清理:所有应…

c语言转义字符空格符号,C语言 转义符\t占用几个空格

这个问题,在你学习编程过程中可能会考虑到,有时为了字节对齐而使用转义符中\t,但是到底\t占用几个空格呢?下面我们首先通过程序来体验下,然后在总结#include int main(){printf("123456\t123\t45\n");printf("12\t…

检测Maven依赖中介

从Maven 2.0.9开始,向Maven添加了一个新功能,称为依赖中介。 依赖关系中介是Maven在特定情况下在依赖关系树中多次出现依赖关系时用来解决项目依赖关系的技术。 通常,这发生在通过项目的依赖关系链接的传递依赖关系上。 在这种情况下&#xf…

简单的节流函数throttle

在实际项目中,总会遇到一些函数频繁调用的情况,比如window.resize,mouseover,上传进度类似的触发频率比较高的函数,造成很大的性能损耗,这里可以使用节流函数来进行性能优化,主要是限制函数被频…

[探索] 利用promise做一个请求锁

在最近开发小程序的过程中,遇到一个需求,就是请求的时候header需要带上accessToken, accessToken是通过登陆接口返回的参数,可能会出现过期的情况,则需要重新登陆,所以每次加载小程序都会进行一次本地储存的accessToke…

c语言网上找程序组合,C语言程序我同学说在网上下的一章一章的小说组合成一个太麻烦,于是 爱问知识人...

我同学说在网上下的一章一章的小说组合成一个太麻烦,于是我突发奇想要做一个把记事本中的内容按顺序连接起来的程序,但是运行不了,我怀疑是读写时候指针搞错了,情大侠们帮我看看,小弟感激不尽!#include#inc…

用于J2EE开发的Cloud IDE

随着许多传统软件工具进入云计算,我想看看它们与传统工具的比较。 我的兴趣是Java EE技术,并开始寻找一种云服务,该服务使我能够开发,测试和部署Java EE应用程序。 我很快发现,许多云IDE是为Web前端技术(例…

【Python】[02]初识Python

Python3的下载安装 根据书上的推荐,我将学习和使用Python3版本,从www.python.org网站,根据对应的操作系统,下载合适的Python版本即可 我的是64位系统,所以我选择的是Windows x86-64 executable installer 下载完成后双…

自己写了一个多行文本溢出文字补全的小库, 说不定你会用得到的

有些时候产品会有这么个需求,希望给文章或者帖子给一个摘要,最多3行,或者其它行数,超出3行会补上...。当然这种很简单,用css可以搞定。但是遇上要求多点的产品,希望补上的是...查看全文,这样的话…

C语言简单程序情话,给你一份程序员的“科技情话”,赶在双十一前脱单吧

说起程序员很多人第一印象都是呆板木讷但你们不知道程序员的浪漫花样给你一份程序员的“科技情话”赶在双十一前,和你暗恋的人表白吧~程序员的情书Void missing_you()For(timemeet_you;;time)Missing_you()自从遇见你,就没有一刻不想你-----------------…

记录好用的软件

【摘要】 平时用的很舒服的软件,做个记录,一直更新。 【Snipaste截图】 一般都会用QQ的截图工具,但是现在很少登QQ,Snipaste截图也很好用,只需要按F1即可截图。 【ScreenToGif】 ScreenToGif可以录制屏幕生成Gif文件。…

辗转相除法求最大公约数(c++)

#include <iostream> using namespace std;int main() {int m, n, r;cin >> m >> n;r m % n;while( r ){m n;n r;r m % n;}cout << n << endl;return 0; }转载于:https://www.cnblogs.com/yuzilan/p/10626177.html

x86上的Java最终字段没有操作?

我一直很乐于深入研究多线程编程的细节&#xff0c;尽管阅读了多年的CPU内存一致性模型&#xff0c;无等待和无锁算法&#xff0c;Java内存模型&#xff0c;实践中的Java并发性等知识&#xff0c;但我始终很喜欢。等等-我仍然会创建多线程编程错误。 总是令人惊奇的谦卑经历&am…

阿里90后工程师,如何用AI程序写出双11打call歌?

来自阿里巴巴的90后工程师芦阳&#xff0c;用业余时间开发了一套人工智能作词程序——名字叫做MusicGo&#xff0c;这个程序经过芦阳的“喂养”和设定&#xff0c;可以自己写饶舌歌曲。芦阳加入菜鸟也才仅仅四个月&#xff0c;这是他第一次参加双11备战。作为一名新员工&#x…