为了测试我使用django制作的轮询应用程序,投票/ viewing_results的先决条件是用户应该登录。我想创建一个测试套件,其中安装涉及创建testuser,登录并拆除涉及日志记录超出用户并删除用户。
我遇到了setUp()和tearDown()方法 - 但是我们知道它们已经完成了测试中的每个方法。我希望在类级别具有此功能,并且看到django具有setUpClass和tearDownClass - 但由于它们是类方法,因此我无法对它们执行self.client.login,self.client.logout。然后我创建了一个具有setUp和tearDown方法的LoginMixin。
我想知道这两种方法中哪一种更加pythonic并且有更好的选择而不是在每次测试之前登录和退出?
有setUp,tearDown方法:
def setUp(self): self.user = utils.create_user() self.client.login(username='testuser', password='testpasswd') def tearDown(self): self.client.logout() utils.delete_user(self.user)
拥有LoginMixin并让每个测试类派生自它:
class LoginMixin(): def setUp(self): self.user = create_user() self.client.login(username='testuser', password='testpasswd') def tearDown(self): self.client.logout() class MyTest(LoginMixin, TestCase): .... ....
我使用django_nose作为TestRunner。
答案 0 :(得分:0)
如果您未使用setUpClass
课程方法的唯一原因是您无法访问默认客户端,则可以创建自己的并参考:
from django.test.client import Client
class LoginMixin():
client = Client()
# ...