成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

代碼測(cè)試用例指南

chinafgj / 2960人閱讀

摘要:測(cè)試的通用規(guī)則測(cè)試單元應(yīng)該集中于小部分的功能,并且證明它是對(duì)的。通過(guò)去除依賴盡量使測(cè)試單元快速運(yùn)行。實(shí)現(xiàn)來(lái)持續(xù)集成通過(guò)代碼提交的本地或者來(lái)持續(xù)集成測(cè)試你的代碼。

原文鏈接:http://blog.speedx.com/backend-test-guide

將測(cè)試代碼和運(yùn)行代碼一起寫是一種非常好的習(xí)慣。聰明地使用這種方法將會(huì)幫助你更加精確地定義代碼的含義,并且代碼的耦合性更低。

測(cè)試的通用規(guī)則:

測(cè)試單元應(yīng)該集中于小部分的功能,并且證明它是對(duì)的。

每個(gè)測(cè)試單元應(yīng)該完全獨(dú)立。

通過(guò)Mock去除依賴

盡量使測(cè)試單元快速運(yùn)行。

實(shí)現(xiàn)鉤子來(lái)持續(xù)集成

我們通過(guò)一個(gè)簡(jiǎn)單的python程序及unittest作為示例來(lái)為大家介紹如何進(jìn)行測(cè)試,這里推薦大家使用python3來(lái)運(yùn)行示例。

我們先創(chuàng)建一個(gè)將會(huì)使用的測(cè)試目錄

mkdir /tmp/TestHookTest
cd /tmp/TestHookTest
測(cè)試單元應(yīng)該集中于小部分的功能,并且證明它是對(duì)的

下圖為unittest包中包含的斷言

我們現(xiàn)在來(lái)寫一個(gè)通過(guò)用戶名獲得github信息的一個(gè)函數(shù),并對(duì)這個(gè)函數(shù)進(jìn)行測(cè)試

# test.py
import unittest
import json

import requests

def fetch_github_profile(username):
    response = requests.get("https://api.github.com/users/" + username)
    return response.json()

class SaveDataTest(unittest.TestCase):

    def test_fetch_github_profile(self):
        username = "ZhangBohan"
        data = fetch_github_profile("ZhangBohan")
        self.assertEqual(data["login"], username)

通過(guò)python3 -m unittest test運(yùn)行

每個(gè)測(cè)試單元應(yīng)該完全獨(dú)立

每個(gè)都能夠多帶帶運(yùn)行,除了調(diào)用的命令,都需在測(cè)試套件中。要想實(shí)現(xiàn)這個(gè)規(guī)則,測(cè)試單元應(yīng)該加載最新的數(shù)據(jù)集,之后再做一些清理。

如果有數(shù)據(jù)庫(kù)依賴,在每次測(cè)試前創(chuàng)建測(cè)試數(shù)據(jù)庫(kù),結(jié)束后銷毀該數(shù)據(jù)庫(kù),測(cè)試應(yīng)該有多帶帶的數(shù)據(jù)庫(kù),不要在生產(chǎn)和開發(fā)環(huán)境測(cè)試,避免數(shù)據(jù)變化引起的測(cè)試失敗

通過(guò)Mock去除依賴

假設(shè)我們現(xiàn)在想把取得的用戶數(shù)據(jù)保存到本地,并測(cè)試是否正確保存

# test.py
import unittest
import json

import requests

def fetch_github_profile(username):
    response = requests.get("https://api.github.com/users/" + username)
    return response.json()

def save_data(data):
    with open("data.json", "w") as f:
        f.write(json.dumps(data))

class SaveDataTest(unittest.TestCase):

    def test_fetch_github_profile(self):
        username = "ZhangBohan"
        data = fetch_github_profile("ZhangBohan")
        self.assertEqual(data["login"], username)

    def test_save_data(self):
        data = fetch_github_profile("ZhangBohan")
        save_data(data)

        with open("data.json") as f:
            file_data = json.loads(f.read())
            self.assertIsNotNone(file_data)
            self.assertEqual(data["id"], file_data["id"])

在這個(gè)測(cè)試中我們的test_save_data中的data依賴fetch_github_profile中的返回?cái)?shù)據(jù),現(xiàn)實(shí)情況中會(huì)遇到更為復(fù)雜的依賴,為了一個(gè)測(cè)試用例,我們可能需要構(gòu)建大量的初始化數(shù)據(jù)。我們可以通過(guò)mock來(lái)解除這個(gè)依賴,讓test_save_data專注于測(cè)試保存數(shù)據(jù)部分

# test.py
import unittest
import json
from unittest.mock import MagicMock

import requests

def fetch_github_profile(username):
    response = requests.get("https://api.github.com/users/" + username)
    return response.json()

def save_data(data):
    with open("data.json", "w") as f:
        f.write(json.dumps(data))


FAKE_PROFILE_DATA = {
  "login": "ZhangBohan",
  "id": 2317407
}

class SaveDataTest(unittest.TestCase):

    def test_fetch_github_profile(self):
        username = "ZhangBohan"
        data = fetch_github_profile("ZhangBohan")
        self.assertEqual(data["login"], username)

    def test_save_data(self):
        fetch_github_profile = MagicMock(return_value=FAKE_PROFILE_DATA)
        data = fetch_github_profile("ZhangBohan")
        save_data(data)

        with open("data.json") as f:
            file_data = json.loads(f.read())
            self.assertIsNotNone(file_data)
            self.assertEqual(data["id"], file_data["id"])
盡量使測(cè)試單元快速運(yùn)行

如果一個(gè)多帶帶的測(cè)試單元需要較長(zhǎng)的時(shí)間去運(yùn)行,開發(fā)進(jìn)度將會(huì)延遲,測(cè)試單元將不能如期常態(tài)性運(yùn)行。有時(shí)候,因?yàn)闇y(cè)試單元需要復(fù)雜的數(shù)據(jù)結(jié)構(gòu),并且當(dāng)它運(yùn)行時(shí)每次都要加載,所以其運(yùn)行時(shí)間較長(zhǎng)。把運(yùn)行吃力的測(cè)試單元放在多帶帶的測(cè)試組件中,并且按照需要運(yùn)行其它測(cè)試單元。

實(shí)現(xiàn)hook來(lái)持續(xù)集成

通過(guò)代碼提交的本地hook或者webhook來(lái)持續(xù)集成測(cè)試你的代碼。

舉個(gè)git本地hook的例子(這可假設(shè)你了解git hook的工作原理)。

> git init
> vim .git/hooks/pre-commit

.git/hooks/pre-commit文件中寫入

#!/bin/sh

cd /tmp/TestHookTest && python3 -m unittest test

執(zhí)行:

> chmod +x .git/hooks/pre-commit

> git add test.py
> git commit -m "test hook"
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
[master (root-commit) b390117] test hook
 1 file changed, 9 insertions(+)
 create mode 100644 test.py

在遠(yuǎn)程代碼倉(cāng)庫(kù)部署的webhook能更好的測(cè)試全部代碼。

Python指南-測(cè)試你的代碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38439.html

相關(guān)文章

  • 100天漲薪4k!從功能測(cè)試到自動(dòng)化測(cè)試,我整理的超全學(xué)習(xí)指南!

    摘要:事實(shí)上,自動(dòng)化測(cè)試是相對(duì)于手動(dòng)的。減少人為的錯(cuò)誤自動(dòng)化測(cè)試是機(jī)器完成,不存在執(zhí)行過(guò)程中人為的疏忽和錯(cuò)誤,測(cè)試設(shè)計(jì)完全決定了測(cè)試的質(zhì)量,可以降低減少人為造成的錯(cuò)誤。而接口自動(dòng)化測(cè)試,主要是對(duì)接口進(jìn)行測(cè)試。 今年6月份,由于經(jīng)濟(jì)壓力讓我下定決心進(jìn)階自動(dòng)化測(cè)試,已經(jīng)24的我做了3年功能測(cè)試,坐標(biāo)廣...

    TwIStOy 評(píng)論0 收藏0
  • 無(wú)頭瀏覽器測(cè)試可視化:Laravel Dusk 控制臺(tái)入門指南

    摘要:通過(guò)添加此功能,該程序包將啟用記錄請(qǐng)求和響應(yīng)信息所需的功能。是一條普通控制器路由,用于輸出控制臺(tái)的視圖。收集瀏覽器行為這是整個(gè)擴(kuò)展包最乏味的部分。 Laravel Dusk 控制臺(tái)是一款 Laravel 擴(kuò)展包,能夠?yàn)槟愕?Dusk 測(cè)試套件提供漂亮的可視面板。通過(guò)它,你可以可視化運(yùn)行 Dusk 測(cè)試時(shí)涉及的各個(gè)步驟,以及查看每個(gè)步驟的 DOM 快照。這對(duì)于調(diào)試瀏覽器測(cè)試、并搞清楚后臺(tái)...

    levius 評(píng)論0 收藏0
  • Maven_00

    摘要:例如,可以提供更改日志用源碼管理工具生成交叉引用郵件列表依賴清單單元測(cè)試報(bào)告含覆蓋率提供開發(fā)過(guò)程的最佳實(shí)踐指南通過(guò)收集現(xiàn)行的開發(fā)最佳實(shí)踐,來(lái)指導(dǎo)用構(gòu)建的項(xiàng)目。 本文大約1026個(gè)字,閱讀時(shí)間4分鐘。 主要介紹了Maven名字的由來(lái)、Maven產(chǎn)生的背景和Maven的主要功能。 問(wèn)題:Maven是啥? 大多數(shù)人都用Maven來(lái)管理Java項(xiàng)目的依賴,這個(gè)應(yīng)該是Maven的主要功能沒跑了,...

    booster 評(píng)論0 收藏0
  • 錄制回放模式創(chuàng)建測(cè)試用例 - Katalon Studio

    摘要:的這個(gè)功能支持錄制測(cè)試用例,并可在多種瀏覽器中回放。允許用戶對(duì)所捕獲的對(duì)象選擇定位模式。這樣做有助于重用及維護(hù)對(duì)象。步驟打開并點(diǎn)擊主工具欄上的首個(gè)測(cè)試用例按鍵。步驟記錄下來(lái)的對(duì)象和動(dòng)作會(huì)象以下顯示的那樣保存到測(cè)試用例中。 對(duì)于自動(dòng)化測(cè)試菜鳥來(lái)說(shuō),開始學(xué)習(xí)自動(dòng)化最簡(jiǎn)單的方法是測(cè)試錄制。識(shí)別應(yīng)用系統(tǒng)上的對(duì)象是一件費(fèi)時(shí)且痛苦的事情。Web Recorder Utility(網(wǎng)頁(yè)錄制功能)?捕...

    姘擱『 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<