当要依赖的测试与具有此注释的测试的类相同时,注释的dependsOnMethods属性@Test可以正常工作.但是,如果待测试方法和依赖方法属于不同的类,则它不起作用.示例如下:
class c1 {
@Test
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnMethods={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个限制?一个简单的方法是在class c2该调用中创建一个测试c1.verifyConfig().但这将是太多的重复.
我正在使用Jenkins,Python,Selenium2(webdriver)和Py.test框架为Web测试创建测试用例.
到目前为止,我正在组织以下结构的测试:
每个类都是测试用例,每个test_方法都是一个测试步骤.
当一切正常时,这个设置很有效,但当一步崩溃时,其余的"测试步骤"变得疯狂.我可以借助于包含类(测试用例)中的失败teardown_class(),但是我正在研究如何改进它.
我需要的是以某种方式跳过(或xfail)test_一个类中的其余方法,如果其中一个失败,那么其余的测试用例不会运行并标记为FAILED(因为这将是误报)
谢谢!
更新:我不是在寻找或回答"这是不好的做法",因为这样称呼它是非常有争议的.(每个测试类都是独立的 - 这应该足够了).
更新2:在每个测试方法中放置"if"条件不是一个选项 - 是很多重复工作.我正在寻找的是(也许)有人知道如何使用类方法的钩子.
我正在构建一个Android应用程序,它使用Firebase作为后端和模型,视图,演示者架构.但是,Firebase是一项云服务这一事实使我的Android应用程序中的自动化测试变得复杂.到目前为止,我已经构建了大部分身份验证系统,但我无法看到如何在我的应用中为Firebase代码实现单元测试.在端到端测试方面,我也陷入困境.
由于测试是任何Android应用程序的基础,没有它应用程序开发人员无法确定他们已实现的功能是否按预期运行,如果没有自动化测试,我无法真正进一步发展.
总之,我的问题是:
通常,如何在Android应用程序中实现Firebase自动化测试?
编辑:
作为一个例子,有人可以单独测试以下方法吗?
public void addUser(final String name, final String birthday,
final String email, final String password) {
Firebase mUsersNode = Constants.mRef.child("users");
final Firebase mSingleUser = mUsersNode.child(name);
mSingleUser.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mSingleUser.child("birthday").setValue(birthday);
mSingleUser.child("email").setValue(email);
mSingleUser.child("password").setValue(password);
return Transaction.success(mutableData);
}
@Override
public void onComplete(FirebaseError firebaseError, boolean b, DataSnapshot dataSnapshot) {
if(firebaseError != null) {
mSignUpPresenter.addUserFail(firebaseError);
} else {
mSignUpPresenter.addUserComplete();
}
}
});
}
Run Code Online (Sandbox Code Playgroud) android integration-testing automated-tests unit-testing firebase
我已经在网上搜索了WebDriver API.我没有看到使用WebDriver/Selenium2.0打开新标签的方法.
有人可以确认我是对的吗?
谢谢,克里斯.PS:我看到的当前替代方案是在同一窗口中加载不同的URL或打开新窗口.
我正在使用Selenium Remote Control.在执行测试期间,实际的Firefox窗口非常小.我想要全屏,所以我可以看到发生了什么.如何最大化浏览器屏幕?
id如果我使用 HTML属性而不是像这样的数据属性会有什么不同吗data-testid?
data-testid测试中使用参考:
我认为每个人如何使用Webdriver进行测试自动化必须意识到它对Web开发的巨大优势.
但如果文件上传是您的网络流量的一部分,那么存在一个巨大的问题.它不再是测试自动化.浏览器的安全限制(调用文件选择)实际上使得无法自动化测试.
Afaik唯一的选择是让webdriver单击文件上传按钮,睡眠线程,让开发人员/测试人员手动选择文件,然后执行其余的Web流程.
如何解决这个问题,有没有解决方法呢?因为它真的不能这样做.这没有意义.
这是我所知道的浏览器安全限制不适用的唯一情况:
<script language=javascript>
function window.onload(){
document.all.attachment.focus();
var WshShell=new ActiveXObject("WScript.Shell")
WshShell.sendKeys("D:\MyFile.doc")
}
</script>
Run Code Online (Sandbox Code Playgroud) 我正在使用TestNG for Eclipse.
我的问题是,如果可能的话,一步一步地给两个数据提供者提供相同的测试功能?我可以将两个提供商合二为一,但这不是我想要的.我需要(不像在这个例子中)独立生成数据.
@DataProvider(name = "dataSet1")
public Object[][] createDataX() {
return new Object[][] { { 1, 1 }, { 2, 2 } };
}
@DataProvider(name = "dataSet2")
public Object[][] createDataY() {
return new Object[][] { { 0, 0 }, { 3, 3 } };
}
Run Code Online (Sandbox Code Playgroud)
我想让BOTH提供商进行同样的测试.这可能吗?
@Test(dataProvider = "dataSet1") // ??? and "dataSet2" ???
public void testThisFunction(int val1, int val2) {
boolean solution = oracle(val1,val2);
assert (solution);
}
Run Code Online (Sandbox Code Playgroud) 如何从单元内测试中获取单元测试名称?
我在BaseTestFixture类中有以下方法:
public string GetCallerMethodName()
{
var stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
return methodBase.Name;
}
Run Code Online (Sandbox Code Playgroud)
我的Test Fixture类继承自基类:
[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}
Run Code Online (Sandbox Code Playgroud)
我有以下系统测试:
[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
string testMethodName = this.GetCallerMethodName();
//
}
Run Code Online (Sandbox Code Playgroud)
当我从Visual Studio中运行它时,它会按预期返回我的测试方法名称.
当由TeamCity运行时,_InvokeMethodFast()将返回,这似乎是TeamCity在运行时为自己使用而生成的方法.
那么我怎样才能在运行时获得测试方法名称?
automated-tests ×10
java ×4
selenium ×3
testing ×3
testng ×2
unit-testing ×2
webdriver ×2
android ×1
c# ×1
capybara ×1
dataprovider ×1
file-upload ×1
firebase ×1
firefox ×1
html ×1
javascript ×1
junit ×1
node.js ×1
pytest ×1
python ×1
reactjs ×1
selenium-rc ×1
teamcity ×1