RobotFramework学习系列--(二)

 上一篇文章大概讲了RobotFramework 构建测试套件部分。这篇文章讲一下如何从文本文件(.txt或者.robot文件)到Robot进行测试数据结构的转化。以下面的文件为例test.txt

 1 *** Settings ***
 2 Suite Setup       Initialize
 3 Suite Teardown    Clear
 4 Resource          ../Test_Run_Call.txt
 5 
 6 *** Test Cases ***
 7 Init_Env
 8     log    Status is OK!
 9 
10 Scope_Test
11     log    Status is OK!
1     def _parse(self, path):
2         try:
3             return TestData(source=abspath(path),
4                             include_suites=self.include_suites,
5                             warn_on_skipped=self.warn_on_skipped)
6         except DataError, err:
7             raise DataError("Parsing '%s' failed: %s" % (path, unicode(err)))

由文件到Robot数据结构主要是通过_parse这个函数来完成。也就是TestData这个函数来完成(虽然看着像一个类,但其不是哦~不要被它欺骗)

1 # robot/parsing/model.py
2 def TestData(parent=None, source=None, include_suites=None,
3              warn_on_skipped=False):
4     if os.path.isdir(source):
5         return TestDataDirectory(parent, source).populate(include_suites,
6                                                           warn_on_skipped)
7     return TestCaseFile(parent, source).populate()

   由上面的源码可以得知,此处根据传入的source类型不同,而调用不同的类。当source为文件时,调用TestCaseFile这个类进行构建,而当source为目录时,调用TestDataDirectory进行构建。这也说明,robot支持指定单独的文件(suite),也支持指定包含许多文件(Suite)目录。下面以TestCaseFile这个类进行分析。

 1 class TestCaseFile(_TestData):
 2 
 3     def __init__(self, parent=None, source=None):
 4         self.directory = os.path.dirname(source) if source else None
 5         self.setting_table = TestCaseFileSettingTable(self)
 6         self.variable_table = VariableTable(self)
 7         self.testcase_table = TestCaseTable(self)
 8         self.keyword_table = KeywordTable(self)
 9         _TestData.__init__(self, parent, source)
10 
11     def populate(self):
12         FromFilePopulator(self).populate(self.source)
13         self._validate()
14         return self
15 
16     def _validate(self):
17         if not self.testcase_table.is_started():
18             raise DataError('File has no test case table.')
19 
20     def _table_is_allowed(self, table):
21         return True
22 
23     def has_tests(self):
24         return True
25 
26     def __iter__(self):
27         for table in [self.setting_table, self.variable_table,
28                       self.testcase_table, sel
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值