测试比较没有按预期工作
Test comparison doesn't work as expected
1) 我的量角器代码中有一个非常奇怪的错误。而且我不明白这可能是什么原因。
it('should filtering by interval correctly', function () {
filter_field.click();
var filter_field_text = filter_field.element(by.css('input'));
var exist_value1 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
var exist_value2 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return Math.round(floatValue) + 1;
});
filter_field_text.sendKeys(exist_value1);
filter_field_text.sendKeys('-');
filter_field_text.sendKeys(exist_value2);
browser.sleep(3000);
var filtered_values = element.all(by.xpath('//tr/td[@data-column-index="5"]/div'));
filtered_values.each(function (element, index) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
expect(exist_value1 <= current_value).toBe(true);
});
if (true) console.log("Test done!");
});
我有错误的结果:'Expected false to be true'
虽然,绝对相似的代码工作正常:
it('should filtering by one-sided < interval correctly', function () {
filter_field.click();
var filter_field_text = filter_field.element(by.css('input'));
var exist_value = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
filter_field_text.sendKeys("<");
filter_field_text.sendKeys(exist_value);
browser.sleep(3000);
var filtered_values = element.all(by.xpath('//tr/td[@data-column-index="5"]/div'));
filtered_values.each(function (element, index) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
expect(exist_value <= current_value).toBe(true);
});
if (true) console.log("Test done!");
});
2) 另外我有一个关于复杂期望的问题。我可以做类似的事情吗:
expect(exist_value1 >= current_value & exist_value2 <= current_value).toBe(true);
在我的测试中它不起作用。
你能在 expect 语句之前打印所有这些值吗?如果通过某些计算得出浮点值,则浮点值可能会有所不同。使用 parseFloat(yourString).toFixed(2)
获取小数点后 2 位的浮点值。
今天我找到了问题的答案。
如果有人有同样的问题:比较应该在函数中,因为它是一个js方法。
正确的代码如下:
it('should sorting by interval correctly', function () {
filter_field.click();
if (column_body.get(0).isPresent()) {
var exist_value1 = column_body.get(0).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
var exist_value2 = column_body.get(0).getText().then(function (value) {
var floatValue = parseFloat(value);
return Math.round(floatValue) + 1;
});
filter_field.sendKeys(exist_value1);
filter_field.sendKeys('-');
filter_field.sendKeys(exist_value2);
var filtered_values = element.all(by.xpath(column_body_xpath));
filtered_values.each(function (element) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
expect((exist_value1 <= floatValue) && (exist_value2 >= floatValue)).toBeTruthy(); //INTO SCOPES!!!
});
});
}
else {
expect(true).toBe(false);
}
console.log("ps-grid-column-filter-range_spec_8");
});
1) 我的量角器代码中有一个非常奇怪的错误。而且我不明白这可能是什么原因。
it('should filtering by interval correctly', function () {
filter_field.click();
var filter_field_text = filter_field.element(by.css('input'));
var exist_value1 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
var exist_value2 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return Math.round(floatValue) + 1;
});
filter_field_text.sendKeys(exist_value1);
filter_field_text.sendKeys('-');
filter_field_text.sendKeys(exist_value2);
browser.sleep(3000);
var filtered_values = element.all(by.xpath('//tr/td[@data-column-index="5"]/div'));
filtered_values.each(function (element, index) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
expect(exist_value1 <= current_value).toBe(true);
});
if (true) console.log("Test done!");
});
我有错误的结果:'Expected false to be true' 虽然,绝对相似的代码工作正常:
it('should filtering by one-sided < interval correctly', function () {
filter_field.click();
var filter_field_text = filter_field.element(by.css('input'));
var exist_value = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
filter_field_text.sendKeys("<");
filter_field_text.sendKeys(exist_value);
browser.sleep(3000);
var filtered_values = element.all(by.xpath('//tr/td[@data-column-index="5"]/div'));
filtered_values.each(function (element, index) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
expect(exist_value <= current_value).toBe(true);
});
if (true) console.log("Test done!");
});
2) 另外我有一个关于复杂期望的问题。我可以做类似的事情吗:
expect(exist_value1 >= current_value & exist_value2 <= current_value).toBe(true);
在我的测试中它不起作用。
你能在 expect 语句之前打印所有这些值吗?如果通过某些计算得出浮点值,则浮点值可能会有所不同。使用 parseFloat(yourString).toFixed(2)
获取小数点后 2 位的浮点值。
今天我找到了问题的答案。 如果有人有同样的问题:比较应该在函数中,因为它是一个js方法。
正确的代码如下:
it('should sorting by interval correctly', function () {
filter_field.click();
if (column_body.get(0).isPresent()) {
var exist_value1 = column_body.get(0).getText().then(function (value) {
var floatValue = parseFloat(value);
return (floatValue);
});
var exist_value2 = column_body.get(0).getText().then(function (value) {
var floatValue = parseFloat(value);
return Math.round(floatValue) + 1;
});
filter_field.sendKeys(exist_value1);
filter_field.sendKeys('-');
filter_field.sendKeys(exist_value2);
var filtered_values = element.all(by.xpath(column_body_xpath));
filtered_values.each(function (element) {
var current_value = element.getText().then(function (value) {
var floatValue = parseFloat(value);
expect((exist_value1 <= floatValue) && (exist_value2 >= floatValue)).toBeTruthy(); //INTO SCOPES!!!
});
});
}
else {
expect(true).toBe(false);
}
console.log("ps-grid-column-filter-range_spec_8");
});