为 cookie 字典中的键断言值
Assert value for key in cookie dict
我刚刚开始使用 python 测试自动化,我试图断言单击某个按钮时会设置具有特定值的特定 cookie。我正在使用 splinter 进行自动化测试,到目前为止我有这个:
cookie_bar = browser.find_link_by_text('Yes')
manage_cookies = browser.find_link_by_text('Manage cookies')
if not manage_cookies:
if cookie_bar:
browser.find_link_by_text('Yes').first.click()
else:
browser.find_link_by_text('Hide this message').first.click()
if manage_cookies:
browser.find_link_by_text('Manage cookies').first.click()
browser.driver.switch_to_window(browser.windows[-1].name)
browser.find_by_text('Accept Cookies').first.click()
browser.driver.switch_to_window(browser.windows[-1].name)
cookies_list = browser.cookies.all()
"browser.cookies.all()" 方法 returns {'cookie1': 'value1', 'cookie2': 'value2', etc.} 的字典;我试图断言 "cookie1" 返回值 "value1",但到目前为止我尝试的任何事情都没有奏效,因为它们都带有某种 "unhashable" 错误:
assert ['cookie1' == 'value1'] in cookies_list # TypeError: unhashable type: 'list'
assert [{'cookie1': 'value1'}] in cookies_list # TypeError: unhashable type: 'list'
assert {'cookie1': 'value1'} in cookies_list # TypeError: unhashable type: 'dict'
assert {'cookie1', 'value1'} in cookies_list #TypeError: unhashable type: 'set'
现在,我以前从未与 python 合作过,所以也许是一些非常简单的事情让我逃避了,但我终究无法弄清楚。我可以单独声明它们,但我真正需要的是,用最简单的术语来说:
assert 'cookie1' with value 'value1' in cookies_list
有办法吗?
你说 browser.cookies.all()
return 是一个字典,因此,你应该将它用作字典而不是列表。
例如你可以这样做:
assert cookies_list.get('cookie1', None) == 'value1'
查找有关词典的更多信息here
检查多个值:
创建另一个我们期望值的字典:
expected = {'cookie1': 'value1', 'cookie2': 'value2'}
编辑以改进答案:
然后迭代字典的所有键。
for key in expected.keys():
assert cookies_list.get(key, None) == expected[key]
我刚刚开始使用 python 测试自动化,我试图断言单击某个按钮时会设置具有特定值的特定 cookie。我正在使用 splinter 进行自动化测试,到目前为止我有这个:
cookie_bar = browser.find_link_by_text('Yes')
manage_cookies = browser.find_link_by_text('Manage cookies')
if not manage_cookies:
if cookie_bar:
browser.find_link_by_text('Yes').first.click()
else:
browser.find_link_by_text('Hide this message').first.click()
if manage_cookies:
browser.find_link_by_text('Manage cookies').first.click()
browser.driver.switch_to_window(browser.windows[-1].name)
browser.find_by_text('Accept Cookies').first.click()
browser.driver.switch_to_window(browser.windows[-1].name)
cookies_list = browser.cookies.all()
"browser.cookies.all()" 方法 returns {'cookie1': 'value1', 'cookie2': 'value2', etc.} 的字典;我试图断言 "cookie1" 返回值 "value1",但到目前为止我尝试的任何事情都没有奏效,因为它们都带有某种 "unhashable" 错误:
assert ['cookie1' == 'value1'] in cookies_list # TypeError: unhashable type: 'list'
assert [{'cookie1': 'value1'}] in cookies_list # TypeError: unhashable type: 'list'
assert {'cookie1': 'value1'} in cookies_list # TypeError: unhashable type: 'dict'
assert {'cookie1', 'value1'} in cookies_list #TypeError: unhashable type: 'set'
现在,我以前从未与 python 合作过,所以也许是一些非常简单的事情让我逃避了,但我终究无法弄清楚。我可以单独声明它们,但我真正需要的是,用最简单的术语来说:
assert 'cookie1' with value 'value1' in cookies_list
有办法吗?
你说 browser.cookies.all()
return 是一个字典,因此,你应该将它用作字典而不是列表。
例如你可以这样做:
assert cookies_list.get('cookie1', None) == 'value1'
查找有关词典的更多信息here
检查多个值: 创建另一个我们期望值的字典:
expected = {'cookie1': 'value1', 'cookie2': 'value2'}
编辑以改进答案: 然后迭代字典的所有键。
for key in expected.keys():
assert cookies_list.get(key, None) == expected[key]