Python 高级编程笔记之测试驱动开发
2016-03-24 16:59
851 查看
书籍目录:
1.我不测试
测试驱动开发原理
哪一类测试
2.我测试
Unittest的缺陷
Unittest的替代品
仿真和模拟
文档驱动开发
主要内容:
测试驱动开发原理:TDD由编写覆盖所需要功能的测试用例,之后编写该功能两部分工作组成。换句话说,将在代码存在前编写测试用例。
哪一类测试:最主要的是验收测试(或功能测试)和单元测试。
Unittest的缺陷:
该框架笨重,因为:1.必须在TestCase子类中编写所有的测试;2.必须在方法名称前加test;3.被要求使用TestCase提供的断言方法;4.必须为所要的运行测试活动建立测试套件。
框架难以扩展
测试装置有时难组织,因为setUp和tearDown机制绑定在TestCase上,但是它们在每测试时运行一次。
在Python软件之上不容易运行测试活动,必须编写额外的脚本来收集测试,聚集并运行它。
Unittest的替代品:
nose
py.test
文档驱动开发:
编写一个故事
书本中的内容过于理论化,以下是个人心得:
本章节介绍了TDD(测试驱动开发)原理及必要性
单元测试框架:unittest 、nose 、py.test
unittest本人一直用来做自动化框架,nose和py.test先前了解了但没怎么用。nose示例如下:
good.py
test_good.py
执行结果:
参考文献:
Python单元测试框架之pytest—如何执行测试用例
本人利用Bootstrap + EasyUI + Django开发网站:http://www.xuyangting.com/ 欢迎来访
阳台测试: 239547991(群号)
本人博客:http://xuyangting.sinaapp.com/
1.我不测试
测试驱动开发原理
哪一类测试
2.我测试
Unittest的缺陷
Unittest的替代品
仿真和模拟
文档驱动开发
主要内容:
测试驱动开发原理:TDD由编写覆盖所需要功能的测试用例,之后编写该功能两部分工作组成。换句话说,将在代码存在前编写测试用例。
哪一类测试:最主要的是验收测试(或功能测试)和单元测试。
Unittest的缺陷:
该框架笨重,因为:1.必须在TestCase子类中编写所有的测试;2.必须在方法名称前加test;3.被要求使用TestCase提供的断言方法;4.必须为所要的运行测试活动建立测试套件。
框架难以扩展
测试装置有时难组织,因为setUp和tearDown机制绑定在TestCase上,但是它们在每测试时运行一次。
在Python软件之上不容易运行测试活动,必须编写额外的脚本来收集测试,聚集并运行它。
Unittest的替代品:
nose
py.test
文档驱动开发:
编写一个故事
书本中的内容过于理论化,以下是个人心得:
本章节介绍了TDD(测试驱动开发)原理及必要性
单元测试框架:unittest 、nose 、py.test
unittest本人一直用来做自动化框架,nose和py.test先前了解了但没怎么用。nose示例如下:
good.py
# -*- coding:utf-8 -*- import hashlib import time import requests from Crypto.Cipher import AES from Crypto import Random from binascii import a2b_hex # AES加密 def get_sign_nature(timestamp): BS = 16 pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) key_str = "D8EF40495D6C6CD171BFA4403516B035" plain = timestamp iv = Random.new().read(AES.block_size) obj = AES.new(a2b_hex(key_str),AES.MODE_ECB,iv) plain = pad(plain) result = obj.encrypt(plain).encode("hex").upper() return result def login(mobile, password): head = "http://app55test.mncats365.com:9080/" body = "user/app/login.do" tim = str(time.time()).split(".")[0] + "000" must_parameters = "&isApple=0&ver_name=5.5.0" + "×tamp=" + tim + "&signnature=" + get_sign_nature(tim) payload = "&userPassword=" + hashlib.md5(password).hexdigest()[8:24] + \ "&token=f7f3d60393d49ff8®id=020759f564f&userAccount="+ mobile url = head + body + "?" + payload + "&" + must_parameters headers = {'content-type': 'application/json'} try: r = requests.post(url, headers=headers) result = r.json() except: result = {"status": url} return result if __name__ == '__main__': print login("13133841111", "123456")
test_good.py
# -*- coding:utf-8 -*- import nose from good import login def test_login(): assert login("13133841111", "123456").get("status") == 1 if __name__ == '__main__': nose.runmodule()
执行结果:
C:\Python27\python.exe C:/Users/009/PycharmProjects/Auto/Python/Python高级编程/chapter_11/test_good.py . ---------------------------------------------------------------------- Ran 1 test in 0.238s OK Process finished with exit code 0
参考文献:
Python单元测试框架之pytest—如何执行测试用例
本人利用Bootstrap + EasyUI + Django开发网站:http://www.xuyangting.com/ 欢迎来访
阳台测试: 239547991(群号)
本人博客:http://xuyangting.sinaapp.com/
相关文章推荐
- python csv to json
- python中列表和元组以及字符串的操作
- 简单的Python爬虫刷访问量程序
- python操作sqlite3的几项问题分析
- Python学习笔记day10
- Python中如何在继承的类中调用基类的方法
- python_爬虫模拟登录微博
- Python学习笔记(1)——基础知识
- Selenium + Python 搭建自动化测试环境(三)
- 【Numpy】python机器学习包Numpy基础知识学习
- Python datetime的简单使用
- [Spark]Spark与Anaconda配置(Python)
- digit image process --- python-skimage
- 解决Python出现_warn_unsafe_extraction问题的方法
- python3中字符串问题
- windows 新版xgboost Python包安装教程 win10 64
- Python sys.argv[] 使用
- Python 适合用于做什么
- canopy/ipython中显示excel中文单元格序列办法
- python(6)-shutil模块