0

こんにちは、Python Web アプリケーションの回帰テスト スイートのセットアップを手伝っています。私たちのテストの多くは、現在の日付が重要なスケジュール スタイルのテストです。例: 2 月 1 日から始まる 1 か月間、毎週実行される定期的なイベントを作成します。

これをテストするために、私が実際にやりたいことは、現在の日付をオーバーライドして、時間を前後に移動してアプリの状態を確認できるようにすることです。たとえば、Python バックエンドに渡され、日付の計算に使用される「現在の」日付を設定できるテスト専用ページを追加する場合があります。

過去にこれを行ったときは、最初からアプリケーション アーキテクチャに組み込みました。

これが私の質問です。Web サービス呼び出しで現在の日付をオーバーライドする方法はありますか? たとえば、現在の日付の呼び出しを傍受できますか (モンキー パッチが適用される可能性がありますか?)。何百ものメソッドを変更することになるため、IOC 全体を行う必要はありません。-デイブ

4

2 に答える 2

1

次のようなことができます。

from datetime import datetime
orig_datetime_now = datetime.now

datetime.now = lambda: datetime(2010, 2, 1)

# tests here

datetime.now = orig_datetime_now

ただし、クラスにヘルパー メソッドを配置して現在の日付を取得し、上記と同じモンキー パッチを適用する方がおそらく (サード パーティのライブラリなどを台無しにしないため) 良い考えです。

于 2010-10-28T20:55:24.473 に答える
0

私自身の質問に答える:

現在の計画は、仮想マシンでテストし、VMの日付/時刻を変更することです。これは、データベーススレッドとワーカースレッドを一度に取得するため、より完全なソリューションです。

私たちが実際にそれを行うようになったときに、いくつかの実際の経験を含む更新を投稿します。

于 2010-11-08T04:12:26.187 に答える