1. 程式人生 > >python unittest控制用例的執行順序

python unittest控制用例的執行順序

運行時 pytho 接口測試 改名 改名字 一個 運行 如果 order

為什麽要進行順序控制呢?使用過testng的同學就知道,它相對於junit來說有更強大的功能,其中的一個功能就是依賴測試。什麽是依賴測試呢?簡單的說一下就是,A方法運行時,其中有個變量的取值是B方法的動態產出值。這樣就必須先執行B方法。testng的test方法有dependson屬性來制定方法的依賴。但是向python的unittet框架,他類似於junit,沒有依賴測試的功能。unittest的main()方法執行用例的順序是按照測試類、測試方法的名字的ASCII順序來執行測試方法。如果想要控制執行順序,有以下兩種方式:

1、 通過TestSuite按照順序添加想要執行的方法

suite = unittest.TestSuite()

suite.addTest(TestBddClass("method_name_c"))

suite.addTest(TestBddClass("method_name_a"))

這樣方法的執行順序就是先執行method_name_c,在執行method_name_a

  這種方式的確定是,你必須要一個個手動去添加,測試過程中,用例個數不可能很少,這樣就懵逼了吧。看下一種方式吧。

2、順應testunit的執行順序,就是通過控制方法名字來實現。

比如,我要執行一個交易過程的接口測試,該過程包含兩個過程,一個是createOrder(創建訂單),一個是confirmOrder(確認訂單),並且confirmOrder需要交易ID,而交易ID是createOrder接口的動態產出,所以必須要先執行createOrder。

如果名字是testCreateOrder和testConfirmOrder的話,那麽肯定先執行testConfirmOrder。怎麽辦呢?那就改名字唄,比如test_a_CreateOrder, test_b_ConfirmOrder

說的有點啰嗦,但大概是這個意思。

python unittest控制用例的執行順序