Exemplo n.º 1
0
 def test_uses_given_time_if_specified(self):
     event = 12
     expected = self.fake_now + timedelta(minutes=42)
     subscriber = Subscriber(event=event)
     EventBroker.publish(event=event, event_time=expected)
     expect(subscriber.kwargs_received).to(
         contain_key_with_value("event_time", expected))
Exemplo n.º 2
0
 def test_does_not_quit_when_debugging_and_test_failed(self):
     self.set_debug_flag()
     sut = Browser()
     sut
     EventBroker.publish(event=TestEvent.test_failed)
     EventBroker.publish(event=TestEvent.suite_ended)
     assert not self.quit_was_called(), "quit() was called"
Exemplo n.º 3
0
 def test_subscribes_to_last(self):
     all_events = list(TestEvent)
     events = (all_events[1], all_events[3], all_events[5])
     spy = FunctionSpy()
     EventBroker.subscribe(events=events, func=spy)
     EventBroker.publish(event=events[-1])
     spy.assert_was_called()
Exemplo n.º 4
0
 def test_suite_erred_message(self):
     err = RuntimeError("something broke")
     EventBroker.publish(event=TestEvent.suite_erred,
                         suite_name="spam",
                         exception=err)
     level, msg = self.logged()
     expect(msg).to(equal(format_exception(err)))
Exemplo n.º 5
0
 def test_sample_measured_level(self):
     EventBroker.publish(event=TestEvent.sample_measured,
                         test_name="spam",
                         sample_parameters="spam",
                         sample_execution_seconds=0)
     level, msg = self.logged()
     expect(level).to(equal("info"))
Exemplo n.º 6
0
 def test_does_not_subscribe_to_unspecified(self):
     all_events = list(TestEvent)
     events = (all_events[1], all_events[3], all_events[5])
     spy = FunctionSpy()
     EventBroker.subscribe(events=events, func=spy)
     EventBroker.publish(event=all_events[2])
     expect(spy.call_history).to(be_empty)
Exemplo n.º 7
0
 def test_test_skipped_message(self):
     err = TestSkipped("Let's not go there")
     test_name = "A rather silly place"
     EventBroker.publish(event=TestEvent.test_skipped,
                         exception=err,
                         test_name=test_name)
     level, msg = self.logged()
     expect(msg).to(equal('Check "%s" skipped: %s' % (test_name, err)))
Exemplo n.º 8
0
 def test_test_skipped_level(self):
     err = TestSkipped("Let's not go there")
     test_name = "A rather silly place"
     EventBroker.publish(event=TestEvent.test_skipped,
                         exception=err,
                         test_name=test_name)
     level, msg = self.logged()
     expect(level).to(equal("warning"))
 def publish_results(self):
     self.results = SuiteResults()
     self.results.suite_name = self.suite_name
     self.results.tests = [
         TestResult(test_name="Test %d" % n) for n in range(4)
     ]
     EventBroker.publish(event=TestEvent.suite_results_compiled,
                         suite_results=self.results)
Exemplo n.º 10
0
 def test_creates_suite_exception_if_none_specified(self):
     suite_name = "Squirelly Suite"
     start_suite(suite_name)
     EventBroker.publish(event=TestEvent.suite_erred,
                         suite_name=suite_name,
                         exception=RuntimeError())
     end_suite()
     expect(self.retrieve_results().suite_exception).to(be_a(Exception))
Exemplo n.º 11
0
 def test_publishes_event_type(self):
     all_events = list(TestEvent)
     events = (all_events[1], all_events[3], all_events[5])
     published = events[1]
     spy = FunctionSpy()
     EventBroker.subscribe(events=events, func=spy)
     EventBroker.publish(event=published)
     expect(spy["event"]).to(equal(published))
Exemplo n.º 12
0
 def test_attaches_artifact_to_suite_when_no_test_named(self):
     artifact = b"fffffffffffffff"
     start_suite()
     EventBroker.publish(event=TestEvent.artifact_created,
                         artifact=artifact)
     end_suite()
     results = self.retrieve_results()
     expect(results.artifacts).to(contain(artifact))
Exemplo n.º 13
0
 def test_test_failed_message(self):
     err = AssertionError("oops")
     test_name = "Test tea"
     EventBroker.publish(event=TestEvent.test_failed,
                         exception=err,
                         test_name=test_name)
     level, msg = self.logged()
     expect(msg).to(equal('Check "%s" failed: %s' % (test_name, err)))
Exemplo n.º 14
0
    def test_unbound_subscriber_gets_garbage_collected(self):
        def subscriber():
            Evidence.subscriber_ran = True

        EventBroker.subscribe(event=EVENT, func=subscriber)
        subscriber = None
        gc.collect()
        EventBroker.publish(event=EVENT)
        assert not Evidence.subscriber_ran, "Subscriber ran after it should have been garbage collected"
Exemplo n.º 15
0
 def test_request_method_and_url(self):
     method = "HEAD"
     sut = HttpClient()
     url = "http://i.love2spam.net/spam"
     getattr(sut, method.lower())(url)
     EventBroker.publish(event=TestEvent.test_failed,
                         exception=RuntimeError())
     expect(self.published["artifact"]).to(
         contain("\n%s %s" % (method, url)))
Exemplo n.º 16
0
 def test_closes_tunnel_on_suite_end(self):
     self.context.set_env(browser_locaton="BrowserStack",
                          BROWSERSTACK_SET_LOCAL="true")
     spy = MasterSpy(TunnelToNowhere())
     self.context.inject_as_class(BrowserStackTunnel, spy)
     sut = Browser()  # noqa: F841
     assert not spy.was_closed, "close was called prematurely."
     EventBroker.publish(event=TestEvent.suite_ended)
     assert spy.was_closed, "close was not called."
Exemplo n.º 17
0
 def test_publish_with_test_name_on_test_failed(self):
     sut = HttpClient()
     sut.get("http://spamoni.io")
     name = "nombre"
     EventBroker.publish(event=TestEvent.test_failed,
                         test_name=name,
                         exception=RuntimeError())
     assert self.published, "Nothing was published"
     expect(self.published).to(contain_key_with_value("test_name", name))
Exemplo n.º 18
0
 def test_publish_with_suite_name_on_suite_erred(self):
     sut = HttpClient()
     sut.get("http://spamoni.io")
     name = "bubba"
     EventBroker.publish(event=TestEvent.suite_erred,
                         suite_name=name,
                         exception=RuntimeError())
     assert self.published, "Nothing was published"
     expect(self.published).to(contain_key_with_value("suite_name", name))
Exemplo n.º 19
0
 def test_attaches_exception_to_errant_suite(self):
     suite_name = "SPAMmy Suite"
     exception = RuntimeError("I don't like SPAM!")
     start_suite(suite_name)
     EventBroker.publish(event=TestEvent.suite_erred,
                         suite_name=suite_name,
                         exception=exception)
     end_suite()
     expect(self.retrieve_results().suite_exception).to(equal(exception))
Exemplo n.º 20
0
 def test_request_headers(self):
     headers = {"X-yz": "yogurt humphrey", "Content-length": "infinite"}
     sut = HttpClient()
     sut.get("http://something", headers=headers)
     EventBroker.publish(event=TestEvent.test_failed,
                         exception=RuntimeError())
     expect(self.published["artifact"]).to(
         contain("\n".join(["%s: %s" % (k, v)
                            for k, v in headers.items()])))
Exemplo n.º 21
0
 def on_suite_erred(self, suite_name=None, test_name=None, **kwargs):
     EventBroker.publish(
         event=TestEvent.artifact_created,
         artifact=str(self._transcript),
         artifact_mime_type="text/plain",
         artifact_type="http_transcript",
         suite_name=suite_name,
         test_name=test_name,
     )
Exemplo n.º 22
0
 def test_saves_artifact_with_suite_and_test_to_test_dir_under_suite(self):
     suite_name = "Libations"
     test_name = "test_tea"
     EventBroker.publish(event=TestEvent.suite_started,
                         suite_name=suite_name)
     publish(test_name=test_name)
     actual_path, _ = os.path.split(self.fake_file.filename)
     expect(actual_path).to(
         equal(os.path.join(self.artifacts_path, suite_name, test_name)))
 def test_saves_artifact_with_suite_and_test_to_test_dir_under_suite(self):
     suite_name = "Libations"
     test_name = "test_tea"
     EventBroker.publish(event=TestEvent.suite_started,
                         suite_name=suite_name)
     publish_artifact(test_name=test_name)
     run_id, kind, suite, test, filename = self.extract_key_parts()
     expect(suite).to(equal(suite_name))
     expect(test).to(equal(test_name))
Exemplo n.º 24
0
 def test_sample_measured_message(self):
     name = "Turkey"
     params = "argle bargle"
     seconds = 105.3
     EventBroker.publish(event=TestEvent.sample_measured,
                         test_name=name,
                         sample_parameters=params,
                         sample_execution_seconds=seconds)
     level, msg = self.logged()
     expect(msg).to(equal(f"{name} completed in {seconds} seconds"))
Exemplo n.º 25
0
 def test_response_headers(self):
     headers = {"X-yz": "Sam the spammer", "Content-length": "2"}
     self.fake_requests.response.headers = headers
     sut = HttpClient()
     sut.get("http://something")
     EventBroker.publish(event=TestEvent.test_failed,
                         exception=RuntimeError())
     expect(self.published["artifact"]).to(
         contain("\n".join(["%s: %s" % (k, v)
                            for k, v in headers.items()])))
    def test_sends_self_to_dom_dump(self):
        arg = None

        def fake_dump(a):
            nonlocal arg
            arg = a

        self.context.inject(dump_dom, fake_dump)
        EventBroker.publish(event=TestEvent.suite_erred)
        expect(arg).to(be(self.sut))
Exemplo n.º 27
0
 def publish_dom_dump(self, artifact_group=None, suite_name=None, test_name=None, **kwargs):
     EventBroker.publish(
         artifact_group=artifact_group,
         event=TestEvent.artifact_created,
         artifact=dependency(dump_dom)(self),
         artifact_mime_type="text/html",
         artifact_type="dom_dump",
         suite_name=suite_name,
         test_name=test_name,
     )
Exemplo n.º 28
0
 def publish_screenshot(self, artifact_group=None, suite_name=None, test_name=None, **kwargs):
     EventBroker.publish(
         artifact_group=artifact_group,
         event=TestEvent.artifact_created,
         suite_name=suite_name,
         test_name=test_name,
         artifact=self._driver.get_screenshot_as_png(),
         artifact_type="screenshot",
         artifact_mime_type="image/png",
     )
Exemplo n.º 29
0
    def test_does_not_attempt_to_run_garbage_collected_subscriber(self):
        def subscriber():
            pass

        EventBroker.subscribe(event=EVENT, func=subscriber)
        subscriber = None
        gc.collect()
        EventBroker.publish(event=EVENT)
        assert not self.errors_logged(
        ), 'Unexpected errors in the log: "%s"' % (self.errors_logged())
Exemplo n.º 30
0
 def test_creates_missing_test_on_artifact_with_test_name(self):
     test_name = "oops"
     start_suite()
     EventBroker.publish(event=TestEvent.artifact_created,
                         test_name=test_name,
                         artifact="this")
     end_suite()
     results = self.retrieve_results()
     expect(results.tests).to(have_length(1))
     test = results.tests[0]
     expect(test.name).to(equal(test_name))