Mar*_*oni 5 python django unit-testing
有没有办法从响应中测试html:
response = self.client.get('/user/login/')
Run Code Online (Sandbox Code Playgroud)
我想要一个详细的检查,如输入ID和其他属性.此外,已设置的会话如何?是否有可能在测试中检查它们的值?
小心.
此外,已设置的会话如何?是否有可能在测试中检查它们的值?
TDD是关于外部可见行为的.要查看用户是否有会话,您将提供仅在用户登录并具有会话时才起作用的链接.
通常的练习如下所示.
class When_NoLogin( TestCase ):
def test_should_not_get_some_resource( self ):
response= self.client.get( "/path/that/requires/login" )
self.assertEquals( 301, response.status_code )
Run Code Online (Sandbox Code Playgroud)
也就是说,当没有登录时,一些(或所有)URI重定向到登录页面.
class When_Login( TestCase ):
def setUp( self ):
self.client.login( username='this', password='that' )
def test_should_get_some_resource( self ):
response= self.client.get( "/path/that/requires/login" )
self.assertContains( response, '<input attr="this"', status_code=200 )
self.assertContains( response, '<tr class="that"', count=5 )
Run Code Online (Sandbox Code Playgroud)
也就是说,登录时,一些(或所有)URI按预期工作.
此外,URI响应包含您需要的标记.
您不测试Django以查看它是否创建会话.Django已经为此进行了单元测试.您测试应用程序的外部可见行为 - 它是否像会话一样?页面是否正确可见?它们是否根据会话特定信息进行了正确定制?
不确定,但请看一下https://docs.djangoproject.com/en/dev/topics/testing/tools/#testing-responses.
response.context 也许是一种检查你的价值观的方法.
Simon Willison的汤选是一种很好的方法来测试基于类似jQuery的CSS选择器的HTML响应的内容.因此,例如,要检查您的页面是否包含带ID的输入my_input_id:
from BeautifulSoup import BeautifulSoup as Soup
from soupselect import select
response = self.client.get('/user/login/')
soup = Soup(response.content)
self.assertEquals(len(select(soup, 'input#my_input_id')), 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4094 次 |
| 最近记录: |