测试最基本的原理就是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败。

python 单元测试官方文档:

[Python: 2.7] (https://docs.python.org/2/library/unittest.html)

1.用import语句引入unittest模块

coding=utf-8
import json #导入json模块
import unittest #导入unittest模块
import os
from nose.tools import *
from tests import helper
from youcart import create_app, db
from youcart.models import ShipmentState, Shipment, ShipmentService #导入测试类ShipmentService模块

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

class ShipmentServiceTest(unittest.TestCase):

3.在setUp()方法中进行测试前的初始化工作(在每个测试用例前后做一些辅助工作),并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法。

    def setUp(self):
self.app = create_app('testing')
self.app_crx = self.app.app_context()
self.app_crx.push()
self.client = self.app.test_client() db.drop_all()
db.create_all() user = generate_user(self.app)
login(self, user.email, user.password)
self.user = user from data import seeds
seeds.all_(self.app) def tearDown(self):
self.app_crx.pop()

4.定义测试用例,名字以test开头(一个测试用例应该只测试一个方面,测试目的和测试内容应该明确。主要是调用assertEqual、assert_greater等断言方法判断程序执行结果和预期值是否相符。)

    def test_should_find_shipment_service(self):
# 验证物流存在
with open('./mocks/shipment-services.json', 'r') as shipments: #获取准备好的物流信息
# python open方法
data = json.load(shipments)
self.assertIsNotNone(data)
#判定 data不为空
actual = ShipmentService.query.get(random.randint(1, 5)) def _assert_shipment_service(expected):
self.assertEqual(actual, expected)
self.assertIsNotNone(actual)
[_assert_shipment_service(actual) for actual in data]
# 通过for 循环遍历出data的值 assert_greater(actual.get('id'), 0)
assert_greater(actual.get('external_id'), 0)
assert_greater(actual.get('name'), 0)
#判定 物流存在

5.调用unittest.main()启动测试。(如果测试未通过,会输出相应的错误提示,如果测试全部通过则不显示任何东西)

python unittest 测试笔记(一)的更多相关文章

  1. python unittest 测试笔记(二):使用Requests

    1. Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用.[Python Requests快速入门 :]http://cn.python-requests.org/z ...

  2. Python unittest 测试输入(input)和输出(print)

    Python 自带的 unittest 库可以用来写单元测试. 测试输入输出的解决方法是: 将标准输入输出定向到一个StringIO类(python3是 io.StringIO). import un ...

  3. python:unittest(测试框架)

    一,基本概念 TestCase:所有测试用例的基类 TestLoad:加载测试用例,返回TestSuite(测试套件) TestSuite:创建测试套件 TextTestRunner:运行测试用例 T ...

  4. Python 下的unittest测试框架

    unittest测试框架,直接上图吧: data:数据:主要格式为CSV:读取方式:csv.reade: public:封装的模块:通用的模块单独封装,所需参数设置为变量: testcase:测试用例 ...

  5. 【转】python模块分析之unittest测试(五)

    [转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...

  6. python内置模块之unittest测试(五)

    系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) python模块分析之logging日志(四) pytho ...

  7. Python接口测试实战3(下)- unittest测试框架

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  8. python unittest自动测试框架

    编写函数或者类时进行测试,确保代码正常工作 python  unittest 模块提供了代码测试工具.按照定义测试包括两部分:管理测试依赖库的代码(称为‘固件’)和测试本身. 单元测试用于核实函数的某 ...

  9. 基于Python的接口自动化-unittest测试框架和ddt数据驱动

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

随机推荐

  1. js创建xml对象

    js创建xml对象 //创建对象 function getDataXML() {     var objTds = $("TEXTAREA");     var count = o ...

  2. 网站启用gzip压缩

    gzip压缩启用不启用还是要看实际情况的,启用gzip后可以相应的减轻带宽压力但是同时也会增加cpu的压力(压缩解压),相反的如果不启用那么cpu压力也会相应的减少,具体情况具体分析. Linux开启 ...

  3. Mysql安装设置建议(参数设置)

    当我们监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于给你一份 ...

  4. Java ssh 框架 hibernate 详细理解

    Hibernate框架技术相信对大多数的 java 程序员并不陌生,数据表之间的关系如何通过Hibernate来建立,需要我们认真的分析数据表中数据项之间的交互: 数据库表的之间的关系有: (1)一对 ...

  5. EMMC与RAND的区别

    作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. EMMC与RAND的区别 说到两者的区别,必须从flash的发展历程说起,因 ...

  6. CentOS编译安装emacs并配置

    Liunxs中CentOS系列一向以稳定为目标,然而也会存在版本太旧的问题,emacs就是其中的一个,目前emacs都发行到25.2了,而CentOS上的emacs版本却还是23.1.所以需要下载源代 ...

  7. 原创-angularjs2不同组件间的通信

    AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传 ...

  8. copyWithZone 的使用方法

    1.简单复制只能实现浅拷贝:指针赋值,使两个指针指向相同的一块内存空间,操作不安全. 2. Foundation类已经遵守了<NSCopying>和 <NSMutableCopyin ...

  9. Github开源:Sheng.RabbitMQ.CommandExecuter (RabbitMQ 的命令模式实现)

    [Github]:https://github.com/iccb1013/Sheng.RabbitMQ.CommandExecuter Sheng.RabbitMQ.CommandExecuter 是 ...

  10. React入门---可复用组件-10

    主要对props更多重要的特性进行学习; 还是用之前代码, index.js代码为: var React = require('react'); var ReactDOM = require('rea ...