unittest

27. Unittest单元测试框架的介绍与使用

匿名 (未验证) 提交于 2019-12-02 23:42:01
先贴一下unittest 官网地址 。unittest文档开头介绍了四个重要的概念:test fixture,test case, test suite, test runner。 test fixture test fixture表示执行一个或多个测试所需的准备。怎么去理解这句话呢?比如我们执行一条创建文章的测试用例,但是如果我们调用创建文章的接口,需要我们进行登录。那么我们可以把登录作为一个test fixture。那么test fixture表现形式是什么呢?还是用add函数举例。先说test fixture中有几个 test case 测试用例,这个不必多说,没有测试用例就不能叫做接口测试了。 test suite 我们在做接口测试的时候,一般都是执行多条测试用例。这就有了test suite概念,简单来说,就是把想要执行的测试用例进行组装然后进行测试。 test runner 执行测试用例。 为了方便大家的理解,会用一个实例对上面四个概念进行解释。请看如下代码: import unittest class AddTest ( unittest . TestCase ): def setUp ( self ): print ( "在每个用例执行之前" ) def tearDown ( self ): print ( "在每个用例执行之后" ) @classmethod

unittest----assert断言的使用

匿名 (未验证) 提交于 2019-12-02 23:42:01
unittest的官发文档链接: https://docs.python.org/2.7/library/unittest.html#unittest.TestCase 先介绍下unittest的基本使用方法: 1.import unittest 2.定义一个继承自unittest.TestCase的测试用例类 3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。 4.定义测试用例,名字以test开头。 5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。 6.调用unittest.main()启动测试 7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。 常用的assert断言方法,来自官网的截图: 还有其他方法用于执行更具体的检查,如下截图:    示例:   已 assertEqual 的使用为例,查看运行的结果。 #!/usr/bin/env python # coding=UTF-8 import unittest class lucky(unittest.TestCase): def test_01(self): a = 1 b = 2 self.assertEqual(a,b,u

selenium--unittest框架前置后置条件

匿名 (未验证) 提交于 2019-12-02 23:38:02
# coding:utf-8 import unittest import time class Test1(unittest.TestCase): '''测试类,是多个测试用例的集合,可以把一些相同的操作写成一个类''' def setUp(self): # 每条用例开始时都得执行一次(执行多次) print("-----开始测试!!!----") def tearDown(self): # 每条用例结束后都得执行一次(执行多次) print("-----测试结束!!!----") @ classmethod # 必须要加@classmethod装饰器 def setUpClass(cls): # 只有最开始的时候才会执行(执行一次) print("-----打开浏览器----") @ classmethod def tearDownClass(cls): # 只有结束后才会执行(执行一次) print("-----关掉浏览器------") if __name__ == '__main__': unittest.main()

flask中manage.py的用法

匿名 (未验证) 提交于 2019-12-02 23:03:14
flask中manage.py的用法 #!/usr/bin/env python import os from app import create_app, db from app.models import DBNSZone, DBNSDevice, DBNSLink, DBNSNSIPAssign, DBSYSDevice, DBSYSMenu, DBSYSUser, \ DBSYSUserMapMenu from flask.ext.script import Manager, Shell from flask.ext.migrate import Migrate, MigrateCommand app = create_app(os.getenv('FLASK_CONFIG') or 'default') manager = Manager(app) migrate = Migrate(app, db) def make_shell_context(): return dict(app=app, db=db, DBNSZone=DBNSZone, DBNSDevice=DBNSDevice, DBNSLink=DBNSLink, DBNSNSIPAssign=DBNSNSIPAssign, DBSYSDevice=DBSYSDevice,DBSYSUserMapMenu

单元测试框架之unittest(一)

匿名 (未验证) 提交于 2019-12-02 23:03:14
一、单元测试的含义 unittest单元测试框架的设计灵感来源于Junit(Java语言的单元测试框架),它与其他语言的单元测试框架风格相类似,支持自动化测试、为测试共享setUp和shutDown、它可以在将测试用例聚合到一起形成一个集合一起执行的同时在测试报告中展示独立的测试结果。 为了达到此目的,unittest支持几个重要的面向对象式的概念: 1、test fixture   一个test fixture所做的事情是执行单个或多个测试用例时的准备工作和执行结束后的一些相关清理工作,这包括:创建临时或代理数据库、目录或开始服务器进程。 2、test case   一个test case 是一个独立的测试单元,针对于一组特定的输入得到的特殊相应的验证,通过继承unittest提供的基类TestCase, 然后可以创建新的测试用例 3、test suite   一个test suite 是一组测试用例的集合,也可以是一组test suite的集合,也可以两者混合的集合,test suite就是用来聚合你想要一起执行的测试用例的 4、test runner   一个test runner 是一个协调测试执行并向用户提供执行结果的组建,它可以使用图形界面、文本界面或返回一个特殊值标识测试执行的结果 二、实例代码 下面我们看Python官方给的一个简单的小例子,来测试三个字符串

python笔记24-unittest单元测试之mock.patch

匿名 (未验证) 提交于 2019-12-02 22:56:40
上一篇 python笔记23-unittest单元测试之mock 对mock已经有初步的认识, 本篇继续介绍mock里面另一种实现方式,patch装饰器的使用,patch() 作为函数装饰器,为您创建模拟并将其传递到装饰函数 官方文档地址 1.unittest.mock.patch(target,new = DEFAULT,spec = None,create = False,spec_set = None,autospec = None,new_callable = None,** kwargs ) target参数必须是一个str,格式为‘package.module.ClassName‘, 注意这里的格式一定要写对,如果你的函数或类写在pakege名称为a下,b.py脚本里,有个c的函数(或类),那这个参数就写“a.b.c” new参数如果没写,默认指定的是MagicMock spec=True或spec_set=True,这会导致patch传递给被模拟为spec / spec_set的对象 new_callable允许您指定将被调用以创建新对象的不同类或可调用对象。默认情况下MagicMock使用。 1.接着上一篇 python笔记23-unittest单元测试之mock ,新建一个temple.py,写入以下代码 # 保存为temple.py # coding:utf-8

python测试断言

匿名 (未验证) 提交于 2019-12-02 22:56:40
  这几天看了一下python的测试,基于函数方法和基于类的测试,主要使用的模块是unittest模块,为特定的方法和类,建立测试模块,测试函数功能是否满足预期。下面是模仿书里面的一个例子。   City.py模块 def city(city_name,country_name): full_city_name = city_name + ‘ , ‘ + country_name return full_city_name   为这个模块创建一个测试模块,主要是为了测试这个city方法是否能够满足预期。   assert模块 import unittest from City import city class Testcity(unittest.TestCase): def test_city(self): city_name = ‘ Santiago ‘ country_name = ‘ Chile ‘ full_city_name = city(city_name,country_name) print (full_city_name) self.assertEqual(full_city_name, ‘ Santiago,Chile ‘ ) # self.assertEqual(4+5,9) if __name__ == ‘ __main__ ‘ : unittest

python单元测试pytest

匿名 (未验证) 提交于 2019-12-02 22:56:40
1、pytest简介 pytest是 Python 的一种单元框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败 能够支持简单的单元测试和复杂的功能测试 支持重复执行失败的case 支持运行由nose, unittest编写的测试case 具有很多第三方插件,并且可以自定义扩展 方便的和持续集成工具集成 支持参数化 2、安装pytest pip install pytest 3、举例 (1)单测试case 执行测试的时候,我们只需要在测试文件test_sample所在的目录下,运行py.test即可。pytest会在当前目录及其子目录下寻找以test开头的py文件或者以test结尾的py文件(即测试文件),找到测试文件之后,进入到测试文件中寻找test_开头的测试函数并执行。 在当前目录下新建文件 test_champ.py def func(x): return x + 1 def test_answer(): assert func(3)==5 在命令行输入py.test [-q],加上-q(quiet)输出结果会省去pytest版本信息,便可以看到执行的成功与失败的原因了 (2)多测试case 当需要编写多个测试样例的时候

Python学习之路10-测试代码

匿名 (未验证) 提交于 2019-12-02 22:54:36
《Python编程:从入门到实践》笔记。 本章主要学习如何使用Python标准库中的unittest模块对代码进行简单的测试。 作为初学者,并非必须为你尝试的所有项目编写测试;但参与工作量较大的项目时,你应对自己编写的函数和类的重要行为进行测试。这样你就能够更加确定自己所做的工作不会破坏项目的其他部分,你就能够随心所欲地改进即有代码。如果不小心破坏了原来的功能,你马上就会知道,从而能够轻松地修复问题。相比于等到Bug出现后再去改,在测试未通过时采取措施要容易得多。而且,如果你想要分享你的项目,有测试的代码更容易让人接受。 以下是一个将用户输入的姓与名拼接的函数: # name_function.py def get_formatted_name (first, last) : """返回一个整洁的完整姓名""" full_name = first + " " + last return full_name.title() if __name__ == '__main__' : print( "Enter 'q' at any time to quit." ) while True : first = input( "\nPlease give me a first name: " ) if first == "q" : break last = input( "Please

转:unittest的几种运行方式

南笙酒味 提交于 2019-12-02 22:54:25
#unittest-test.py import unittest from demo import RunMain import HtmlTestRunner class TestMethod(unittest.TestCase): #类方法 @classmethod def setUpClass(cls): print("类执行之前的方法") @classmethod def tearDownClass(cls): print("类执行之后的方法") #每次方法之前执行 def setUp(self): print("setup") def test_01(self): url_p = "https://easy-mock.com/mock/5d0cce9536b12b2b2e62adc7/example/upload" data = { "hello":"world", "botoo":"123" } res = RunMain(url_p,"POST",data).res #print(res) self.assertIn("undefined_http",str(res['data'])) globals()['img'] = res['data']['img'] #加入缓存 def test_02(self): print(img) url_g ="https:/