1

ドキュメントを読んだことによる私の理解は、次のようになります。

  1. client は TestCase のサブクラスです。を実行するmanage.py testと、「test_」を開始するメソッドごとに SimpleTest クラス (TestCase から継承) のインスタンスが作成されます。これはself
  2. Client は client のサブクラスです。新しい Client インスタンスを作成できますが、そうすると便利な場合があります。
  3. しかし、どういうわけか、 と入力self.clientすると、TestCase が作成されたときにインスタンス化された特定の Client が参照され、TestCaseの 1 層下のクライアント クラスは参照されません。

これは正しいです?もしそうなら、これはどのような場合ですか - スーパークラスと関係がありますか?

4

1 に答える 1

1

あなたの質問とドキュメントの両方を正しく理解している場合。このプロパティは便宜上提供されており、各テストがClient インスタンスclientにアクセスできることが理にかなってい ます。from django.test.client import Client

最初の質問:

  1. client は TestCase のサブクラスです。manage.py テストを実行すると、「test_」を開始するメソッドごとに SimpleTest クラス (TestCase から継承) のインスタンスが作成されます。これはセルフです。

ソースからClient が TestCase のサブクラスであるようには見えません。

class Client(RequestFactory):
    """
    A class that can act as a client for testing purposes.

ソースから私はどこを見ませんか?Client クラスはインスタンス化されて TestCase インスタンスにアタッチされていますが、どこかにあります。

Django は完全にオープン ソースであるため、自由な時間があれば、物事がどのように、どこで起こっているかを簡単に追跡できます。 https://github.com/django/django インポート パスをたどって grep すると、すべての答えが見つかります

于 2012-11-06T00:07:40.803 に答える