---恢复内容开始---

一.python单元测试实例介绍

unittest框架又叫PyUnit框架,是python的单元测试框架。

先介绍一个普通的单元测试(不用unittest框架)的实例:

首先构造一个方法:count.py

#coding=utf-8

def add(a,b):

return a+b;

def minus(a,b):

return a-b

然后构建一个单元测试的方法:testCount.py,(也可以创建一个类,类里面有多个测试方法)

#coding=utf-8

import count

#整数相加

def test_add():

try:

sum=count.add(5,4)

assert(sum==9),"Integer addition result error!"

except AssertionError,msg:

print msg

else:

print "test pass!"

if __name__=="__main__":

print count.add(2,3)

print count.minus(12,1)

test_add()

运行结果如下:

>>>

5

11

test pass!

>>>

知识点一.__name__=="__main__"

.py有两种使用方式,一种是作为模块被调用,另外一种是直接运行。那么如何判断呢?

.py文件会根据自身的使用方式,它的__name__的属性会不同。

(1)如果它的属性是“__main__”,那么脚本就知道自己是被直接执行的。

(2)如果是被别的文件import的来用,__name__的属性就会是脚本自己的文件名,从而防止错误的执行。

引入的if语句的作用就是  通过检查该模块的__name__属性来实现判断.py文件被使用的方式。从而方便我们代码复用,也可以测试模块。

其实就一句话,即例如:test.py

如果是自身运行,则__name__=="__main__",如果 test.py被其他脚本引用,则  __name__=="__test__",

使用下面这个判断的作用就是使程序只有在自身被运行的情况下才执行,如果只是被调用,那么就不运行了。

知识点二. import 的脚本生成 .pyc文件

testCount.py  import了 count.py 这个模组,用import引入模块时,会将引入的模块文件中的代码执行一次。但是注意,只在第一次引入时才会执行模块文件中的代码,因为只在第一次引入时进行加载,之后不会再加载,而导入的这些文件进行字节编译后以.pyc作为扩展名,只有被 import的包才会执行编译生成此文件,所以会生成 count.pyc文件。

二.引用unnittest单元测试框架

先上代码:unittest.py

#coding=utf-8

import count

import unittest

#当pyc文件仍存在时,删除即可

class Mytest(unittest.TestCase):

def setUp(self):

pass

def test_add(self):

self.assertEqual(count.add(3,4),7)

def test_minus(self):

self.assertEqual(count.minus(10,4),6)

def tearDown(self):

pass

#构造测试集,注意suite不和上面的方法是一模块

#报错:AttributeError: 'module' object has no attribute 'suite'

def suite():

suite=unittest.TestSuite()

suite.addTest(Mytest("test_add"))

suite.addTest(Mytest("test_minus"))

return suite

#注意是双下划线,则报错

#报错:NameError: name '_name_' is not defined

if __name__ =="__main__":

unittest.main(defaultTest='suite')

代码编写中出现的问题:

问题定位:查看import库的源文件,发现源文件存在且没有错误,同时存在源文件的.pyc文件

问题解决方法:删除该库的.pyc文件,重新运行代码;或者找一个可以运行代码的环境,拷贝替换当前机器的.pyc文件即可

2.报错:AttributeError: 'module' object has no attribute 'suite'

问题定位:def suite():方法缩进错误,它属于全局方法,缩进和类保持一致,而不是和方法保持一致,相当于testng类和testng.xml文件,属于同级设置

3.报错:NameError: name '_name_' is not defined

问题定位:name左右是双下划线!!!少个下划线。。。。。。。。。晕死。

框架介绍:

1.想使用unittest框架,首先要引入unittest 包

import unittest

2.Mytest类继承unittest.TestCase 类,所有测试执行的类都继承 TestCase类,可以看成是对特定类进行测试的方法的集合

class Mytest(unittest.TestCase):

3. 其中setUp(), tearDown() 和 aseertEqual() 都是TestCase类下的方法。

setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。一般将浏览器的调用和URL的访问放到初始化部分。

tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。

测试的方法通常以test开头

unitest.main()函数用来测试 类中以test开头的测试用例。

4.suite()为全局方法,是unittest的TestSuite(),通过 addTest(类名("方法名"))来添加测试用例,例如一个类中可以写多个用例,通过suite()使之形成多个测试用例被执行。

运行的测试结果如下:

>>>

..

----------------------------------------------------------------------

Ran 2 tests in 0.005s

OK

>>>

三.测试集的运用(如何组织测试用例):

1.直接在suite()中添加测试用例

def suite():

suite=unittest.TestSuite()

suite.addTest(Mytest("test_add"))

suite.addTest(Mytest("test_minus"))

if __name__ =="__main__":

unittest.main(defaultTest='suite')

2.若测试用例都是以 test开头,则用 makeSuite()方法一次性运行

def suite():

return unittest.makeSuite(Mytest,"test")

if __name__ =="__main__":

unittest.main(defaultTest='suite')

3.可以使用TestRunner的子类 TextTestRunner来执行

if __name__ =="__main__":

suite=unittest.TestSuite()

suite.addTest(Mytest("test_add"))

suite.addTest(Mytest("test_minus"))

return suite

runner=unittest.TextTestRunner()

runner.run(suite)

4.若所有的方法都严格按照test开头,则直接用 unittest.main()即可

if __name__ =="__main__":

unittest.main()

---恢复内容结束---

Python+selenium之简单介绍unittest单元测试框架

Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)

写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...

四. 引入unittest单元测试框架

1.   安装 SeleniumIDE(firefox) (1)下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ (2 ...

python实例编写(5)--异常处理,截图,用例设计

一.python的异常处理 异常抛出处理机制: 1.若在运行时发生异常,解释器会查找相应的处理语句(handler) 2.若在当前函数无法找到,就将异常传给上层的调用函数,看是否能处理 3.如果在最外 ...

[python 测试框架学习篇] 分享 uiautomator测试框架

uiautomator测试框架 :https://testerhome.com/topics/4194

#测试框架推荐# test4j,数据库测试

# 背景 后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢? # ...

基于python3在nose测试框架的基础上添加测试数据驱动工具

[本文出自天外归云的博客园] Python3下一些nose插件经过2to3的转换后失效了 Python的nose测试框架是通过python2编写的,通过pip3install的方式安装的nose和相关 ...

Spring MVC测试框架详解——服务端测试

随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

SpringMvc测试框架详解----服务端测试

随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

随机推荐

C#轻型ORM框架PetaPoco试水

近端时间从推酷app上了解到C#轻微型的ORM框架--PetaPoco.从github Dapper 开源项目可以看到PetaPoco排第四 以下是网友根据官方介绍翻译,这里贴出来. PetaPoco ...

ubuntu 16.04 下载源

修改适当的更新源 可以使得aptget安装的速度变得快很多 ubuntu的更新源在 /etc/apt/sources.list 修改更新源 sudo vi /etc/apt/sources.list ...

当tomcat有两个链接数据库的应用同时运行可能冲突

-Xms512M   -Xmx1024M -XX:MaxPermSize=256M

centos7安装redis3.0和phpredis扩展详细教程(图文)

整理一下centos7安装redis3.0和phpredis扩展的过程,有需要的朋友可以拿去使用. 一.安装redis3.0 1.安装必要的包 yum install gcc 2.centos7安装r ...

remove-weknow-ac from mac chrome

refer:https://macreports.com/how-to-remove-weknow-ac-malware-macos/ 1-Remove the weknow.ac profile. ...

ef6.0+mysql配合使用的问题

折腾了很久由于所用到的各种库版本问题:后来终于组合成了一个可用的:记录下各种库的版本 ef6.0 mysql5.5 mysql-connector-net-6.9.12.msi mysql-for-v ...

js中的blob,图片base64URL,file之间的关系

js的base64编码和解码 英文是这样的:// atob() 将base64解码 // btoa() 将字符串转码为base64 var str = 'javascript'; window.bto ...

fabric简单案例

1  执行一个简单的task任务,显示两台机器的/home/guol/目录下的文件 from fabric.api import * env.users='root' env.port=22 env. ...

用Redis实现分布式锁 与 实现任务队列【转载】

这一次总结和分享用Redis实现分布式锁 与 实现任务队列 这两大强大的功能.先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意 ...

如何获取Android唯一标识(唯一序列号)

有很多场景和需求你需要用到手机设备的唯一标识符. 在Android中,有以下几种方法获取这样的ID. 1. The IMEI: 仅仅只对Android手机有效: 1 2 TelephonyManage ...

使用python构造大量测试数据_python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)...相关推荐

  1. python写公众号_python如何编写公众号

    python编写公众号的方法:首先运行cmd,输入[pip install werobot]安装WeRoBot框架:然后打开ide,在项目目录下打开cmd输入[python app.py]并运行:最后 ...

  2. python正则化调优_Python实例介绍正则化贪心森林算法(附代码)

    作者:Ankit Chaoudhary 翻译:笪洁琼 校对:梁傅淇本文共3515字,建议阅读7分钟. 通过本文与大家讨论一个被称为正则化的贪心森林算法. 引言 作为一名参与多个机器学习竞赛数据科学家, ...

  3. python中frame用法_Python实例之wxpython中Frame使用方法

    本节为大家分享的例子是wxpython Frame的用法. 例子: 代码如下: #!/usr/bin/python # -*- coding: GBK -*- # simple.py import w ...

  4. python生成html报表_python生成HTMl报告(unittest)

    放在*\python3\script 或者放在当前项目文件夹下 亦或者在python35下的lib文件夹下 (注意最好放在根目录下) from HTMLTestRunner import HTMLTe ...

  5. python怎么备份列表_python实例:backup 备份

    python实例:backup 备份 本文来源于<python简明教程>中的实例 1. 提出问题: 我想要一个可以为我的所有重要文件创建备份的程序. 2. 分析明确问题:我们如何确定该备份 ...

  6. python案例源码_python实例作品

    python java 调用 jar 包下载 jython jython 2.1 文章 curiousby 2016-08-01 697浏览量 CrazyWing:Python自动化运维开发实战 十. ...

  7. python猴子偷桃_Python实例100个(基于最新Python3.7版本)

    Python3 100例 原题地址: http://www.runoob.com/python/python-100-examples.html git地址: https://github.com/R ...

  8. python智力问答游戏_Python语言编写智力问答小游戏功能

    本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示: 1.设计思路 本项目使用SQLite建立问答题库,每道题包括4个选项答案(3个正确答案,1个错误答案).每道题都有一定分 ...

  9. python交互界面制作_Python 如何编写交互界面?_后端开发

    c语言怎么实现三个数从小到大输出?_后端开发 方法:1.使用if语句对数字x与y进行比较,若x>y则交换x和y的值:2.使用if对x与z进行比较,若x>z则交换x和z的值:3.使用if对y ...

最新文章

  1. Docker 上传镜像amp;拉取镜像
  2. MyEclipse 16(汉化版)安装教程
  3. 面向对象编程03—封装、继承、重写、MRO、多态
  4. 2021ICPC(沈阳) - String Problem(后缀树+贪心)
  5. VmWare下安装CentOS6
  6. node.js详解Http服务器
  7. 察看网页源代码全攻略
  8. NTFS For Mac的兼容性问题
  9. the art of seo(chapter seven)
  10. VectorDraw Web JS 9.9 Crack
  11. Python爬虫实战|爬取视频
  12. 模拟电路笔记(一)晶体二极管及其应用
  13. linux的tomcat日志,linux下查看tomcat的日志
  14. GitHub设置代理 提升速度
  15. 深度剖析U8系统前后台数据关系-王成军-专题视频课程
  16. 【您有新的未分配天赋点】网络流:从懵逼到完全懵逼
  17. 用不同的用户名和密码登录网络上的共享文件夹
  18. 踩坑记-- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa6 in position 17: illegal multibyte seque
  19. 如何在计算机桌面上增添word,word在电脑桌面的图标不见了怎么办
  20. linux下测试远程端口

热门文章

  1. cocos2d-js html5自定义鼠标图案及设置原点方法
  2. MyBatis原理浅析
  3. Tensorflow 笔记 XIV——生成式对抗网络:GAN 与 CGAN
  4. 炼钢-连铸生产动态调度模型(加启发式算法步骤)
  5. Connor学Android - JNI和NDK编程
  6. Python软件编程等级考试一级——20220915
  7. 指针、函数、指针函数和函数指针
  8. 隐藏滚动条css3实现滚动同时隐藏滚动条
  9. SUSE 11 安装sybase ASE 16.0 SP 02安装全过程
  10. 细思极恐---十年生死两茫茫,通信人,意欲亡。