WEB开发网
开发学院软件开发Python Python 测试框架: 选择和运行测试 阅读

Python 测试框架: 选择和运行测试

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示: 尽管 nose 提供更强的定制能力,但是比较简单的测试发现过程如下:当 nose 检查 Python 测试模块的内部时,Python 测试框架: 选择和运行测试(4),它采用在选择测试模块时使用的正则表达式,收集与这个正则表达式匹配的函数和类,从而返回一系列函数,例如,(在默认情况下,寻找包含单

尽管 nose 提供更强的定制能力,但是比较简单的测试发现过程如下:

当 nose 检查 Python 测试模块的内部时,它采用在选择测试模块时使用的正则表达式,收集与这个正则表达式匹配的函数和类。(在默认情况下,寻找包含单词 Test 或 test 的名称,但是可以通过命令行或配置文件提供不同的正则表达式)。

当 nose 检查测试类的内部时,它运行与同一正则表达式匹配的方法。

无须特别指定,nose 总会检测 unittest.TestCase 的子类并作为测试使用它们。但是,它会根据自己的正则表达式决定哪些方法是测试,而不使用标准的 unittest 模式 ^test。

衍生测试(Generative tests)

正如在第一篇文章中看到的,py.test 和 nose 都支持编写为简单函数的测试,这会大大简化 Python 测试的编写:

# test_new.py - simple tests functions 
 
def testTrue(self): 
  assert True == 1 
 
def testFalse(self): 
assert False == 0

如果只需要在某一特定环境中检查组件行为,那么测试函数和更传统的测试类都可以满足需要。但是,如果要执行一系列测试,它们基本相同,只有一些参数有差异,那么怎么办?

为了更容易实现这种测试,避免多次复制并粘贴测试函数以及设置惟一的名称,py.test 和 nose 都支持衍生测试(generative test)。这里的思想是,您提供一个测试函数,它实际上是一个迭代器,然后使用它的 yield 语句并提供调用参数,从而返回一系列函数。例如,如果希望针对一系列 Web 浏览器运行一个测试,可以编写下面这样的代码:

# test_browser.py 
 
def check(browser, page): 
  t = TestBrowser(browser) 
  t.load_page(page) 
  t.check_status(200) 
 
def test_browsers(): 
  for b in 'ie6', 'ie7', 'firefox', 'safari': 
    for p in 'index.html', 'about.html': 
    yield check, b, p

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接