Python高級プログラミングノートのテスト駆動開発
5399 ワード
書籍カタログ:1.テストしないテスト駆動開発原理 どの種類のテスト 2.テストUnittestの欠陥 Unittestの代替品 シミュレーションとシミュレーション 文書駆動開発 主な内容:
テスト駆動開発原理:TDDは、必要な機能を上書きするテスト例を記述し、その後、この機能の2つの部分を記述する作業から構成される.すなわち、コードが存在する前にテスト例が記述される.
どの種類のテスト:最も主要なのは検収テスト(または機能テスト)とユニットテストです.
Unittestの欠陥:このフレームワークは重い.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/
テスト駆動開発原理:TDDは、必要な機能を上書きするテスト例を記述し、その後、この機能の2つの部分を記述する作業から構成される.すなわち、コードが存在する前にテスト例が記述される.
どの種類のテスト:最も主要なのは検収テスト(または機能テスト)とユニットテストです.
Unittestの欠陥:
Unittestの代替品:
ドキュメントドライバの開発:
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/