Python headless 浏览器测试工具 Stanislaw

未知
Python 查看源码»
跨平台
2016-07-27
开源中国股瞎

Stanislaw一款Python headless 浏览器测试工具。

测试代码:

from unittest import TestCase
from stanislaw.browser import Browser
from stanislaw.forms import UnknownFormInput
from stanislaw.forms import SubmitException
from test.util import response_from_file

BASIC_FORM = "basic_form.html"
URL = "http://example.com/form.html"

def get_browser(url=URL, response_file=BASIC_FORM):
    b = Browser()
    b._set_response(response_from_file(url, response_file))
    return b


class FormFillTest(TestCase):
    def test_fill_all_form_values(self):
        browser = get_browser()
        browser.fill({"#first_name": "Niels",
                      "#last_name": "Bohr",
                      "#email_address": "bohr@lanl.gov"})

        self.assertEquals("Niels", browser.query("#first_name").val())
        self.assertEquals("Bohr", browser.query("#last_name").val())
        self.assertEquals("bohr@lanl.gov", browser.query("#email_address").val())

    def test_fill_some_form_values(self):
        browser = get_browser()
        browser.fill({"#first_name": "Niels",
                      "#last_name": "Bohr"})

        self.assertEquals("Niels", browser.query("#first_name").val())
        self.assertEquals("Bohr", browser.query("#last_name").val())
        self.assertEquals("teller@lanl.gov", browser.query("#email_address").val())

    def test_fill_nonexistant_element(self):
        browser = get_browser()
        self.assertRaises(UnknownFormInput, browser.fill,
                          {"#does_not_exist": "bad_value"})

        self.assertEquals("Edward", browser.query("#first_name").val())
        self.assertEquals("Teller", browser.query("#last_name").val())
        self.assertEquals("teller@lanl.gov", browser.query("#email_address").val())

class FormSerializationTest(TestCase):

    def test_form_value_list_simple(self):
        browser = get_browser()
        value_list = browser.form_manager.form_value_list()
        expected = [("first_name", "Edward"),
                    ("last_name", "Teller"),
                    ("email_address", "teller@lanl.gov")]
        self.assertEquals(expected, value_list)

    def test_value_list_after_fill(self):
        browser = get_browser()
        browser.fill({"#first_name": "Niels",
                      "#last_name": "Bohr",
                      "#email_address": "bohr@lanl.gov"})
        expected = [("first_name", "Niels"),
                    ("last_name", "Bohr"),
                    ("email_address", "bohr@lanl.gov")]
        value_list = browser.form_manager.form_value_list()
        self.assertEquals(expected, value_list)

    def test_doesnt_serialize_disabled_element(self):
        browser = get_browser(response_file="difficult_form.html")
        value_list = browser.form_manager.form_value_list()
        self.assertNotIn(("phone", "who uses phones?"), value_list)

    def test_serialize_no_defined_value(self):
        browser = get_browser(response_file="difficult_form.html")
        value_list = browser.form_manager.form_value_list()
        self.assertIn(("first_name", ""), value_list)
        self.assertIn(("last_name", ""), value_list)
        self.assertIn(("email_address", ""), value_list)
        self.assertIn(("biography", ""), value_list)

    def test_serialize_checkboxes(self):
        browser = get_browser(response_file="difficult_form.html")
        value_list = browser.form_manager.form_value_list()
        # An unchecked checkbox
        self.assertNotIn("legal_agree", [v[0] for v in value_list])

        # A checked checkbox, with value
        self.assertIn(("contact_me", "yes"), value_list)

        # A checked checkbox, no value
        self.assertIn(("checked_no_value", ""), value_list)

    def test_serialize_textareas(self):
        browser = get_browser(response_file="difficult_form.html")
        value_list = browser.form_manager.form_value_list()

        self.assertIn(("biography", ""), value_list)
        self.assertIn(("filled_textarea", "Textarea content"), value_list)


class MultipleFormTest(TestCase):
    def test_ambiguous_submit(self):
        browser = get_browser(response_file="multiple_forms.html")
        self.assertRaises(SubmitException,
                          browser.form_manager.get_submit_request)

    def test_precise_submit(self):
        browser = get_browser(response_file="multiple_forms.html")
        request = browser.form_manager.get_submit_request("#form2")
self.assertTrue(request)
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

【自动化测试】无需图形界面环境下的浏览器开源项目

大公司一般都会做自动化覆盖测试,会用到不需要节目的浏览器环境,下面有一些开源工具有时间尝试下 软件名 介绍 支持语言 Awesomium 基于Chromium无图形界面浏览器引擎。 C++, .NET benv Ben...

2016/10/11 23:57
62
0
无需图形界面环境下的浏览器项目一览表

本表几乎列出了所有无需图形界面环境下的浏览器开源项目,可用于自动化、测试或者其他用途。 软件名 介绍 支持语言 Awesomium 基于Chromium无图形界面浏览器引擎。 C++, .NET benv Benv是nod...

2018/06/12 10:16
27
0
南海仲裁案全文

南海仲裁案全文 2016年07月12日 17:35 杨家鑫 2012年中国大陆三沙市人民政府在永兴岛正式挂牌成立。永兴岛是西沙群岛也是整个南海诸岛中最大的岛屿。(资料照片 新华社) 设于海牙的常设仲裁...

2016/07/12 18:53
57
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部