2016-02-15 34 views
0

这是我的简单测试类,运行这个测试,而我得到Asse田:404 = 200Django的Asse田:404 = 200,简单的单元测试类

class SimpleTest(unittest.TestCase): 
def setUp(self): 
    # Every test needs a client. 
    self.client = Client() 

def test_details(self): 
    # Issue a GET request. 
    response = self.client.get('/men/ethnic-wear/') 
    print "code:",response.status_code 
    # Check that the response is 200 OK. 
    self.assertEqual(response.status_code, 200) 

但是,如果我考同一所在Django shell中它返回状态码200.

In [21]: from django.test import Client 

In [22]: c = Client() 

In [23]: response = c.get('/men/ethnic-wear/') 

In [24]: response.status_code 
Out[24]: 200 

第一次我写单元测试脚本引用官方文档,有没有我的意见有问题?

+1

是什么看法呢?它可以返回404本身吗?显示代码。 –

+0

在你的测试中,和Django中的urls.py一样吗? –

回答

0

它接缝,你正试图获取一个对象,不在测试数据库中。请注意,单元测试会创建自己的空数据库。你需要做的只是在setUp函数中添加对象来测试数据库。

为原型:

class SimpleTest(unittest.TestCase): 
    def setUp(self): 
     # Every test needs a client. 
     self.client = Client() 
     Men.objects.create('''whatever attributes here''') 
     # and so on. for each prerequisite that should be there in db 

    def test_details(self): 
     # Issue a GET request. 
     response = self.client.get('/men/ethnic-wear/') 
     print "code:",response.status_code 
     # Check that the response is 200 OK. 
     self.assertEqual(response.status_code, 200)