-2

私は新しい Django であり、最新の Web 開発にも取り組んでいます。私はアプリのテストに疑問を持っていました。混乱は、私の Python の知識が少ないことが原因である可能性があります。私は Java プログラマーだったので、以下のコードに疑問を感じました。これが私のコードです:

def test_was_published_recently_with_old_poll(self):
    """
    was_published_recently() should return False for polls whose pub_date
    is older than 1 day
    """
    old_poll = Poll(pub_date=timezone.now() - datetime.timedelta(days=30))
    self.assertEqual(old_poll.was_published_recently(), False)

これは、私のアプリの test.py にある私のコードです。で実際に何が起こっているのかPoll(pub_date=timezone.now() - datetime.timedelta(days=30))... 私の質問は (Poll は models.py で定義されたクラスです) ここで実際に何が起こっているのでしょうか? 誰か詳しく説明してくれませんか?

前もって感謝します。

4

3 に答える 3

1

あなたの経験はJavaであると言っているので、なぜあなたがここで問題を抱えているのかわかりません. この構文は Java の構文とほぼ同じです。フィールドが特定の値、つまり 30 日前の日付に設定されたPollインスタンスを作成します。pub_date

于 2013-07-05T09:31:21.273 に答える
0

これは、オブジェクトのwas_published_recentlyメソッドが期待どおりに機能していることを確認する単体テストです。Pollのインスタンスを作成し、Pollそれを 30 日前に渡しますdatetime...これは「最近」ではないため、was_published_recentlyメソッドを呼び出すと False が返されることが期待されます。self.assertEqual()次に、期待される動作をテストするために使用しています。

于 2013-07-05T09:33:11.377 に答える
0

'$' Poll(pub_date=timezone.now() - datetime.timedelta(days=30)) で、フィールド pub_date が timezone.now() - datetime.timedelta(days=30) に設定されたクラスを作成します。

たとえば、現在は 2012-07-31 11:19:42.897000+00:00 です。Poll コンストラクターは、pub_date が 2012-07-01 11:19:42.897000+00:00 に設定されたクラスを作成します。

于 2013-07-05T09:22:53.750 に答える