簡體   English   中英

在源代碼中打開/關閉測試

[英]turn on/off test in the source code

我正在用python復制電子表格。 電子表格包含每個星期一而不是其余工作日的數據和處理邏輯。

我想每天運行python代碼,如果是星期一,我想將python結果與電子表格結果進行比較。 我在python代碼之間進行了20多個測試以進行比較。這些測試包括:1)比較從生產數據庫獲得的數據與excel中的數據相同2)比較python產生的結果與excel相同(邏輯是相同)(如果輸入相同)。

如何在不插入20+“ if if Monday:run test_n”到python代碼的情況下打開星期一的測試?

我認為我無法將測試和源代碼分開,因為以后的測試會從先前的處理步驟中獲取輸入。

看來您的選擇數量有限。

您可以重構代碼以將測試組合在一起,以通過更少的if測試來激活它們。 您說不可能,但是在我看來您應該首先嘗試這樣做。 您認識到代碼中有異味,因此您應該嘗試一些重構技術以成功分離測試和源代碼。 檢查其中的一些技巧-有許多討論其中一些技巧的書籍和網站。

您可以按原樣保留您的代碼。 這將增加技術債務,但這可能是必要的。 使用20多個if語句,並對它們進行注釋,以使它們可以被找到並在需要時進行修改。 至少在代碼中只進行一次日期檢查,設置一個布爾變量,然后測試該變量,而不要重做日期檢查。

沒有更多細節,我看不到我們如何提供其他選擇。

如果這些測試是“確保它能正常工作”的意思,則它們不應出現在生產代碼中。 在測試套件中,它們應該完全分開。

測試代碼是一個非常廣泛的主題,但是這里有一些資源可以幫助您入門。

我認為我無法將測試和源代碼分開,因為以后的測試會從先前的處理步驟中獲取輸入。

您絕對可以,每個系統都可以,但是可能需要重新設計系統。 對於遺留代碼,這是一個常見的“雞與蛋”問題:如果無法測試,如何安全地對其進行更改? 有各種各樣的技術可以解決這個問題。 重構是重新設計代碼而不改變其工作方式的過程。 但是沒有細節,我不能說更多。

1)比較我從生產數據庫中獲得的數據與excel中的數據相同

2)如果輸入相同,則比較python會產生與excel相同的結果(邏輯相同)。

您應該在測試代碼的輸出,而不是在代碼內部進行測試。

兩者都應與將各種過程的輸出轉換成可以比較的通用格式有關。 這可能是將它們以JSON格式轉儲,然后將它們全部轉換為Python數據結構,CSV等……最適合您的數據。 然后比較它們以確保它們相同。

同樣,如果沒有您情況的更多詳細信息,我將無法提供更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM