断言cookie dict中键的值

时间:2016-08-26 11:47:16

标签: python cookies automated-tests splinter

我刚刚开始使用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()"方法返回{' cookie1':' value1',' cookie2':' value2'等}的字典;我试图断言" cookie1"回来的是价值" value1",但到目前为止我没有尝试过任何工作,因为它们都带有某种不可避免的"错误:

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

有办法吗?

1 个答案:

答案 0 :(得分:3)

你是说browser.cookies.all()返回一个字典,因此,你应该把它用作字典而不是列表。

例如,你可以这样做:

assert cookies_list.get('cookie1', None) == 'value1'

查找有关字典here

的更多信息

检查倍数值: 创建另一个我们预期值的字典:

expected = {'cookie1': 'value1', 'cookie2': 'value2'}

编辑以改善答案: 然后迭代dict的所有键。

for key in expected.keys():
    assert cookies_list.get(key, None) == expected[key]