现在我有一个 Selenium WebDriver 框架,看起来像这样(大大简化):
\app_func.py -- app_func 具有网络应用的“动作”,例如“保存新搜索”
\app_data.py -- app_data 有常见的断言,例如如果我重用一些测试数据,它会存储该数据的文档计数,所以我可以在我的测试文件中执行断言计数 == app_data.big_zip_file
\util.py -- util 具有通用的、应用程序中立的函数,例如 wait_for_text
\setup.cfg -- setup 包含所有服务器信息等。
然后我有一个测试目录:
- \tests\upload_big_zip -- 每个 test.py 文件导入 app_func、app_data、util。
然后一个测试看起来像:
app_func.upload_data('big.zip')
app_func.save_a_search('search terms', app_data.big_search_hits)
app_func.verify_search_hits
因此,我得到了 PageObjects 模式的主要好处——例如,如果开发人员更改 UI,则能够轻松更新 save_a_search。但它是一个比 OO PageObjects 更“扁平”的结构。我还不能完全理解这个模式。
有什么理由我应该建立一个基于 PageObjects 的新结构吗?我正在寻找的是,与我的方法相比有什么好处?