原创 Python出錯重試:retrying

在編寫Python代碼進行自動化測試、網絡爬蟲或者其他與網絡相關的動作的時候,由於網絡影響會容易失敗,而這種失敗並不是我們需要去處理的。那麼這種時候最好的辦法就是失敗後重試幾次,以避免網絡的間斷性影響。 如果我們正常編寫代碼的話,

原创 Unittest-測試固件:初始化與清理

unittest 提供了針對測試方法、測試類、測試模塊三種範圍的測試固件,每個範圍都有初始化和清理兩種固件。 測試方法 setUp() 和 tearDown() 兩個方法是針對測試用例方法級別的測試固件。 在當前測試類中重寫這兩個

原创 Unittest-測試運行:查看測試結果

前面我們已經使用了兩種方式運行: unittest.main() TextTestRunner unittest.main() 是 unittest 中定義的 main() 方法,會自動查找當前測試文件中的所有測試類中的所有符

原创 Python 虛擬環境

什麼是虛擬環境? 虛擬環境主要是爲了獨立多個 Python 解釋器環境出來。這有什麼用呢? 比如你在網上下了一個 Python 的開源系統,其中用到了 Django 1.11 版本,而你現在系統環境中安裝的是 Django 2.2

原创 接口測試教程 - PostMan 團隊協作

一般做接口測試肯定不會是單打獨鬥,畢竟工作量擺在那裏。 那如何使用 Postman 實現多人協作呢?如果測試同一個系統,用例最好放在一起統一管理,這樣才能方便運行用例。Postman 有一套內建的分享機制,團隊成員必須要擁有 Po

原创 Python + Selenium Page Object頁面對象設計模式

前面提到過 UI 自動化測試最大的障礙或者成本最大的地方就在於頁面的頻繁變化。UI 自動化測試過於依賴於界面,界面變化意味着你的代碼無法使用,需要更新維護。 雖然我們可以通過選擇更有效的用例來達到降低維護成本的目的,但是畢竟以涉及

原创 Python + Selenium(二十四)使用cookie繞過驗證碼

使用 cookie 繞過驗證碼這種方式前提是必須要有長時間保存 cookie 的功能,比如登錄時會有勾選項"保存本次登錄信息",“下次自動登錄”,"記住我"等。 當你勾選類似的選項後,登錄成功後服務器會要求瀏覽器將登錄信息存儲你

原创 更強大的測試框架 Pytest

不少同學做自動化測試時選擇的是 Unittest 框架。Unittest 框架是 xunit 系列的測試框架 ,這類型的框架都具有很多共同的特性,都是各種語言自帶的,比如 Java -> Junit, C# -> Nunit 等等

原创 Pytest 如何編寫用例

Pytest 中不僅支持類寫用例,也支持用函數寫用例,下面我們來看一下如何編寫。 在寫用例之前,我們先了解一下 Pytest 的查找規則,這樣我們才知道什麼樣的用例纔是 Pytest 允許的: Pytest 默認會從配置的目錄(

原创 Python列表推導式問題result = [lambda x: x + i for i in range(10)]

一個經典的 Python 面試題: result = [lambda x: x + i for i in range(10)] print(result[0](10)) 問,打印的結果是多少? 19 不止result[0](1

原创 unit test 框架介紹

Unit test 框架最初的靈感來源於 JUnit,並且與其他語言的主要單元測試框架具有類似的風格。 基本思想: 支持各種層面的自動化測試; 測試用例共享setUp初始化和tearDown清理代碼; 通過各種方式組織測試和規劃

原创 Pytest框架綜述

如果想了解 Pytest 建議至少需要對 unittest 等類似 xunit 的框架有一定認識之後再來看。否則面對 pytest 這種靈活性非常高的框架就會難以理解。 通過了解 Unittest 框架後,至少對一個測試框架應該具

原创 Pytest 運行參數

前面已經講過如何運行測試用例,不管用哪種方式,都可以支持這些運行參數。 你可以通過-h或--help查看所有的命令,包含了所有插件的: pytest --version # 顯示 pytest 的版本 pytest -h |

原创 Unittest-測試套件:用例加載與組織

測試套件TestSuite,用於對測試用例的組織。測試用例組織好以後就可以使用運行器TestRunner運行測試套件中包含的測試用例。 爲了更方便演示,我們將之前的示例拆分到幾個文件中: + test_demo 測

原创 Python 列表推導式

列表推導式,也叫列表生成式,是一種方便生成列表的語句。 比如我們要將一個全是整數的列表中每個數取平方後放入新的列表,我們會這麼寫: li = [3, 6, 9, 11] # 定義一個空列表用來存儲結果 news = [] #