我想组成固定装置。第一个fixture应该总是可用的(把它看作基类)。第二个fixture在不同的测试文件中会有所不同(把它看作是派生类)我试着按照下面的代码运行,它像我预期的那样工作。是否可以遵循此方法或任何更好的选择?
//baseFixture.js
import { test as base} from '@playwright/test';
interface MyFixtures {
fixture1: string;
}
export const test = base.extend<MyFixtures>({
fixture1: "fixture-one"
}, );
//derivedFixture.js
import {test as test1} from 'baseFixture'
interface MyFixtures2 {
fixture2: string;
}
export const test = test1.extend<MyFixtures2>({
fixture2: "fixture-two"
}, );
//in test_file.js
import {test} from 'derivedFixture'
test('should allow me use composed fixture', async ({ page, fixture1, fixture2 }) => {
console.log(`from first fixture ${fixture1}`)
console.log(`from second fixture ${fixture2}`)
});
2条答案
按热度按时间5cg8jx4n1#
在我看来,你正在使用像POM这样的夹具,并且你正在过度设计测试。**如果它适合你,并取决于你想要的,然后使用它。**如果我的假设是正确的,而不是传递夹具到另一个夹具传递POM,你甚至可以在这里执行步骤,让该页面进入特定状态,这里是从剧作家页面的例子:
然后在你的测试中简单地传递
{todoPage} or {settingsPage}
或两者:你也可以在这里链接你的固定装置并重复使用它们,例如。你可以将
todoPage
传递给settingsPage
fixture:这样,todoPage中的所有内容都将被执行,然后是settingsPage,这就是你传递给测试的内容,我猜这就是你试图实现的。
hc2pp10m2#
我的方法是将基础夹具用作衍生夹具中的从属夹具:
关于如何在docs中使用fixture的更多信息