我正在寫一個perl模塊,帶有API接口,我希望把它掛在CPAN之前寫一個測試套件它。但是,由於該模塊基本上只是API的接口,所有測試都需要有效的API密鑰和用戶。很明顯,我不能在測試套件中使用我的API密鑰和用戶名來發布這個模塊,那麼處理這種事情的最佳方式是什麼?我應該在本地進行測試,然後在沒有測試的情況下將它放在CPAN上?有沒有人遇到過這個問題,並提出一個好的解決方案?我知道寫作測試是最好的練習,所以如果可以的話,我願意這樣做。謝謝!Perl的測試套件API
回答
爲什麼不換行的API調用成小功能(例如函數什麼也不做,但API調用),然後作爲使用Test::MockObject
或類似需要在嘲笑你的測試這些功能?
這甚至會更好,因爲你將能夠有一個從API測試不同的結果的測試(失敗,失敗的權威性,等...)
作爲一個說明:這肯定是一個解決方案相比,更喜歡「跳過測試」之一,但不如「模擬單元測試的測試100%的非API調用代碼+讓用戶爲集成測試用例提供自己的密鑰和用戶」 – DVK
這個答案也很好。您將會測試執行API返回值的位。 –
我做了我的文檔,我的模塊是無用沒有API密鑰清晰,使用跳躍:{}測試的結構::更多跳過所有的測試,如果關鍵是不存在的。你可以選擇bail_out而不是跳過。
只要確保您的文檔解釋瞭如何將API密鑰傳遞給模塊。
你能告訴我你的模塊的名稱,所以我可以看看它作爲一個例子嗎? – srchulo
是的。給我一分鐘來查看它。我沒有在2年多的時間裏工作過:-) –
https://metacpan.org/release/VendorAPI-2Checkout-Client –
通常的方法我處理這樣的事情是需要一個環境變量才能運行測試套件。環境變量將包含的信息的有用位(例如API密鑰,主機名來連接,等等)
這裏有一個如何從測試文件中處理這種事的例子。我們使用此爲MongoDB分佈,以檢查是否有可用的服務器針對其運行:
BEGIN {
eval {
my $host = exists $ENV{MONGOD} ? $ENV{MONGOD} : 'localhost';
$conn = MongoDB::MongoClient->new(host => $host, ssl => $ENV{MONGO_SSL});
};
if ([email protected]) {
plan skip_all => [email protected];
exit 0;
}
};
這一切確實是嘗試連接到在MONGOD
環境變量指定(或其他本地主機。)主機如果可以它會跳過所有的測試,並說明原因。跳過仍然算作非故障,所以如果沒有測試服務器可用,它不會阻止模塊的安裝。
我有一個的.pm文件,我use
在分發每.T文件的代碼。
這也是一個很好的答案。 –
- 1. 動態JSON檢查API測試套件
- 2. 如何測試Perl程序從我的測試套件中編譯?
- 3. JDBC測試套件
- 4. Android:測試套件
- 5. ASP.Net測試套件?
- 6. BURP套件測試
- 7. Junit4測試套件
- 8. Perl是否有很好的自動化測試套件?
- 9. 在FitNesse的測試套件
- 10. 爲PHPUnit的測試套件
- 11. Python套件測試不運行測試
- 12. 搖籃測試參數測試套件
- 13. 顯示測試結果使用TFS api的表單測試套件
- 14. TFS API:查找某個測試用例的所有測試套件
- 15. 開發Perl和測試Perl
- 16. JUnit套件合同測試
- 17. 雙音箱測試套件?
- 18. 關於JUnit測試套件
- 19. PolIdeaTestRunner空測試套件
- 20. 設計CRUD測試套件
- 21. PKCS#11測試套件
- 22. Gallio測試套件安裝
- 23. Grails集成測試套件
- 24. 從單元測試套件
- 25. android儀器測試套件
- 26. 柑橘測試套件
- 27. PHP測試套件:建議
- 28. iPhone Store套件測試
- 29. Android Studio空測試套件
- 30. 理解測試套件
您可以編寫和部署不需要密鑰或假密鑰的假api來測試密鑰機制。這可以通過一個環境變量與真實的api交換給那些擁有真實事物的人。 – KeepCalmAndCarryOn
@KeepCalmAndCarryOn - 請參閱我的回答:) – DVK