Example #1
0
    def __unicode__(self):
        messages = []
        total_stories = float(self.successful_stories + self.failed_stories)
        total_scenarios = float(self.successful_scenarios + self.failed_scenarios)
        percentage_successful_stories = (self.successful_stories / (total_stories or 1))
        percentage_failed_stories = (self.failed_stories / (total_stories or 1))
        percentage_successful_scenarios = (self.successful_scenarios / (total_scenarios or 1))
        percentage_failed_scenarios = (self.failed_scenarios / (total_scenarios or 1))

        messages.append("=" * 80)
        messages.append(self.language["test_run_summary"])
        messages.append("=" * 80)
        messages.append("${GREEN}"+self.language["stories_ran_successfully"] % (self.successful_stories, percentage_successful_stories * 100))
        messages.append("${RED}"+self.language["stories_that_failed"] % (self.failed_stories, percentage_failed_stories * 100))
        messages.append("${GREEN}"+self.language["scenarios_ran_successfully"] % (self.successful_scenarios, percentage_successful_scenarios * 100))
        messages.append("${RED}"+self.language["scenarios_that_failed"] % (self.failed_scenarios, percentage_failed_scenarios * 100))
        messages.append("${NORMAL}")
        messages.append(self.language["test_run_status"] % (self.failed_stories > 0 and "FAILED" or "SUCCESSFUL"))
        period = (self.end_time - self.start_time)
        if period == 0:
            threshold = 0
        else:
            threshold = total_scenarios / period
        messages.append(self.language["test_run_timing"] % (total_scenarios, period))
        messages.append(self.language["test_run_threshold"] % threshold)
        if (self.failed_stories > 0):
            messages.append("")
            messages.append("=" * 80)
            messages.append(self.language["test_run_failures"])
            messages.append("=" * 80)
            for story in [story for story in self.stories if story.status == "FAILED"]:
                messages.append("%s %s %s %s %s %s" % (self.language["as_a"], force_unicode(story.as_a),
                                                       self.language["i_want_to"], force_unicode(story.i_want_to),
                                                       self.language["so_that"], force_unicode(story.so_that)))
                messages.append("-" * 80)
                for scenario in [scenario for scenario in story.scenarios if scenario.status == "FAILED"]:
                    messages.append(u"%s %s - %s" % (self.language["scenario"], force_unicode(scenario.index), force_unicode(scenario.title)))
                    messages.append("-" * 80)

                    messages.append("%s: " % self.language["given"])
                    self.render_actions(messages, scenario.givens)

                    messages.append("%s: " % self.language["when"])
                    self.render_actions(messages, scenario.whens)

                    messages.append("%s: " % self.language["then"])
                    self.render_actions(messages, scenario.thens)
                    messages.append("-" * 80)

        return self.term.render(u"\n".join(messages))
Example #2
0
 def render_actions(self, messages, action_collection):
     for action in action_collection:
         self.color = status_by_color(action.status)
         messages.append(u"  ${%s}%s - %s${NORMAL}" % (self.color, force_unicode(action.description), force_unicode(action.status)))
         if (action.status == "FAILED"):
             if (action.error):
                 messages[-1] += (u" - %s" % action.error)
Example #3
0
    def load(self, culture):
        self.__clear()
        file_name = "language_" + culture + ".txt"
        file_path = os.path.join(self.languages_dir, file_name)

        if not os.path.exists(file_path):
            raise LanguageParseError(culture, file_path)

        try:
            content = unicode(open(file_path).read(), encoding='utf-8')
            lines = [line.strip() for line in content.split("\n") if len(line)]
        except ValueError:
            raise LanguageParseError(culture, file_path)

        for line in [line for line in lines if not line.startswith("#")]:
            key, value = line.split("=")
            key = key.strip()
            value = force_unicode(value.strip())

            if "<element selector>" in value:
                value = value.replace("<element selector>", self.language_items["supported_elements"])

            if key.endswith("_regex"):
                value = re.compile(value, re.U)
            self.language_items[key.strip()] = value
Example #4
0
 def __msg_pre_story(self, context, story):
     messages = []
     messages.append(u"=" * 80)
     messages.append(u"%s" % context.language["story"])
     messages.append(u"\n   %s %s\n   %s %s\n   %s %s\n" % (context.language["as_a"], force_unicode(story.as_a),
                                                    context.language["i_want_to"], force_unicode(story.i_want_to),
                                                    context.language["so_that"], force_unicode(story.so_that)))
     print self.term.render(u"\n".join(messages))
Example #5
0
    def __msg_pre_scenario(self, context, scenario):
        messages = []
        messages.append(u"-" * 80)
        messages.append(u"%s %s - %s" % (context.language["scenario"], force_unicode(scenario.index), force_unicode(scenario.title)))
        messages.append(u"-" * 80)
        messages.append(u"")

        print self.term.render(u"\n".join(messages))
Example #6
0
 def render_actions(self, messages, action_collection):
     for action in action_collection:
         messages.append(u"	%s - %s" % (force_unicode(action.description), force_unicode(action.status)))
         if (action.status == "FAILED"):
             if (action.error):
                 messages[-1] += (u" - %s" % action.error)
Example #7
0
 def __getitem__(self, key):
     item = self.language_items.get(key, None)
     if item is None: 
         raise LookupError(self.language_items.get("language_lookup_error", None) % key)
     if not isinstance(item, re._pattern_type): item = force_unicode(item.replace("\\n", "\n"))
     return item
Example #8
0
 def render_actions(self, messages, action_collection):
     for action in action_collection:
         self.color = status_by_color(action.status)
         messages.append(u"      ${%s}%s - %s${NORMAL}" % (self.color, force_unicode(action.description), force_unicode(action.status)))
Example #9
0
    def __msg_post_story(self, context, story):
        messages = []
        messages.append(u"-" * 80)

        self.color = status_by_color(story.status)

        messages.append(u"${%s}%s: %s${NORMAL}" % (self.color, context.language["story_status"], force_unicode(story.status)))
        messages.append(u"-" * 80)
        messages.append(u"")
        
        print self.term.render(u"\n".join(messages))