测试代码开发¶
规约¶
1 2 3 4 5 6 7 8 9 10 | 1)当該メニューを起動した直後(サーバーから情報を取得した状態を想定) 想定結果:更新ボタンが無効、エラーメッセージが出ていない 2)入力値エラーのとき(※) ・入力必須の個所を空にしたとき 想定結果:更新ボタンが無効、入力必須に関連するエラーメッセージが出ている ・入力値が範囲外のとき 想定結果:更新ボタンが無効、入力値に関連するエラーメッセージが出ている 3)1つ以上の項目に関して、起動直後とは違う正常値に変更したとき 想定結果:更新ボタンが有効、エラーメッセージが出ていない (※)境界値の評価は、機能テストで実施済みであることを前提として、e2eにおいては、エラーメッセージの種類分だけ実施してください。 |
1 2 3 4 5 6 7 8 | 1.首先截取程序启动时的状态,这个时候判断更新按钮应该是不可用的,并且没有错误消息 2.输入值错误的情况: *输入值为空 *输入值在范围外 需要判断更新按钮不可用,并且显示错误消息 3.输入值正常,需要判断更新按钮可用,并且没有错误消息 边界值的判断在机能测试中实施,不需要在这里处理 |
代码开发¶
程序开发时要注意,可以输入值的控件尽量添加一个唯一的标识符(如添加id,name等信息)方便在测试中取得该控件
apps/client-e2e/src/po/¶
- 新建程序对应的文件夹
- 参照其他程序新建form.po.ts文件
- form.po.ts中应写出测试中需要取得的控件的变量,如果需要修改控件值的话,也要写出对应的方法
apps/client-e2e/src/spec/¶
- 新建程序对应的文件夹
- 参照其他程序新建e2e-spec.ts文件
- e2e-spec.ts中,参照规约写出对应情况下的输入值,并且截图
用expect方法来验证画面值和期望值
screenshot方法来进行截图
apps/client-e2e/src/spec.capture/¶
- 新建程序对应的文件夹
- 参照其他程序新建e2e-spec.ts文件
这个文件不需要做过多处理,将部分值改为程序对应的即可
注意事项¶
截图的测试代码开发时,可能需要对不同浏览器进行处理
例如chrome中,beforeEach方法可能需要:
1 2 3 | if (process.env.BROWSER === 'chrome'){ browser.ignoreSynchronization = true; } |
其他浏览器中可能需要:
1 | browser.waitForAngularEnabled(false); |
部分测试项需要等待加载,一般推荐在测试项开始前执行:
1 | await browser.driver.sleep(2000); |
让页面加载完成
测试代码debug¶
直接进行e2e测试会执行所有测试项,包括其他程序的
如果想只执行自己的测试项目,可以修改apps/client-e2e下的protractor.conf.js文件
例如,想在ie测试中,只执行自己的测试项目,就修改protractor.ie.conf.js
然后将js中,specs下只执行自己的e2e-spec.ts文件:
1 2 3 4 5 6 7 8 | ... specs: [ // './src/spec/**/*.e2e-spec.ts'//, 注释这一行 //'./src/spec.async/**/*.e2e-spec.ts' // './src/spec/employee/list.e2e-spec.ts' './src/spec/passwordrule/detail.e2e-spec.ts' //添加这一行,只运行passwordrule项目 ], ... |
其他浏览器同理