私はユニットテストに適切な方法は、この一例では、Djangoのビューが何であるか疑問に思って:ユニットテストでビューの属性をテストする必要がありますか?
class UserListView(LoginRequiredMixin, ListView):
model = get_user_model()
template_name = 'users/user_list.html'
ordering = 'last_name'
def get_queryset(self):
self.queryset = self.model.objects.all().annotate(
full_name=Concat('first_name', Value(' '), 'last_name')
)
return super().get_queryset()
私は現在get_queryset
メソッドをテストするユニットです。これは私にこのビューの100%カバレッジを与えますが、たとえばユニットテストでのデフォルト注文をテストする必要がありますか?または、これは統合/システムテストでのみテストする必要がありますか(たとえば、SeleniumまたはDjangoのクライアントを使用して)?
一方の側では、ordering
属性はビューの一部であり、それはその動作に影響を与えます。他方では、サードパーティのコードでのみ使用されます。
私は間違いなくそれをテストしますが、これは**単体テスト**または統合/システムテストでテストする必要があるかどうかです。この属性はサードパーティ製コードの「プリセット」なので、単体テストでテストするのが適切であるとは確信できません。できるだけ依存性の少ない単体テストが必要です。 – rubick
それはあなた次第です。別の統合テストスイートをお持ちの場合は、おそらくサードパーティのコードの変更によって破損する可能性があるため、リストの注文動作を確認する方がよいでしょう。 'UserListView'クラスに属性が存在することをユニットでテストすると、最も明白な失敗モードがなくなるため、無意味です。 – wim
私は別個のSeleniumテストスイートを持っているので、そこでテストすることができます。だから正しく理解すれば、何らかの種類の論理(リストの理解など)が含まれていない限り、テストクラスの属性をユニット化する必要はありません。 – rubick