如何将从 python 命令行声明的变量传递给测试用例实例?编辑:a 和 b 是方法 func() 的输入。
a = [1,2,3]
b = np.array([1,2])
Run Code Online (Sandbox Code Playgroud)
文件名:code.py
import unittest
import numpy as np
def func(a,b)
c = a*b
return (c)
class TestCases(unittest.TestCase):
def test_length_a_equals_length_b(self):
self.assertEqual(len(a), len(b), msg="len(a) != len(b)")
Run Code Online (Sandbox Code Playgroud)
我如何将 a 和 b 输入到测试用例中,因此当它们的长度不相同时会发生错误?
从终端运行文件时出现以下错误:
ERROR: test_a_len_equals_len_b (main.TestCases)
----------------------------------------------------------------------
Traceback (most recent call last):
File "code.py", in test_length_a_equals_length_b
self.assertEqual(len(a), len(b), msg="len(a) != len(b)")
NameError: global name 'a' is not defined
Run Code Online (Sandbox Code Playgroud) 我正在创建 Django 单元测试,并且有一些具有重复功能的非常相似的模型。但是存在一些差异,因此我创建了一个抽象 BaseTestCase 类,其他 TestCase 类从该类继承。它似乎工作正常,除了当从 BaseTestCase 类继承的 TestCase 完成运行测试时,Django 仍将尝试运行 BaseTestCase 类测试。Django 不应该不想在抽象的 BaseTestCase 上运行测试吗?我是否缺少某种类型的配置以确保不会发生这种情况?
测试用例布局
class BaseTestCase(SetupTestCase):
api = ""
def test_obj_list(self):
response = self.client.get(self.api)
self.assertTrue(response.status_code == 200)
def test_obj_create(self):
pass
def test_obj_retrieve(self):
pass
def test_obj_update(self):
pass
def test_obj_delete(self):
pass
class Meta:
abstract = True
class ChildTestCaseOne(BaseTestCase):
api = "/api/v0.1/path_one/"
class ChildTestCaseTwo(BaseTestCase):
api = "/api/v0.1/path_two/"
class ChildTestCaseThree(BaseTestCase):
api = "/api/v0.1/path_three/"
class ChildTestCaseFour(BaseTestCase):
api = "/api/v0.1/path_four/"
class ChildTestCaseFive(BaseTestCase):
api = "/api/v0.1/path_five/"
Run Code Online (Sandbox Code Playgroud)
这应该运行 25 个测试,5 个测试用例的 5 个测试,但它运行了 30 …
我正在编写一个点击某些过滤器的测试,我注意到浏览器之间存在一些差异。例如,在主要浏览器(Chrome、Firefox、Safari)上,复选框以这种格式完全显示:Checkers、Cheese、Salsa、Butter。当我在 IE11 上运行测试时,这些字符串是小写的,因为它是小写的,所以我的测试失败了。为了解决这个问题,我希望使用正则表达式。我用来单击这些复选框的函数是可重用的。
我很困惑,因为我试图在正则表达式中传递字符串但测试失败。然后我继续创建一个模板文字,有人以这种方式在正则表达式中传递字符串,但测试仍然失败。我的问题是,是否有更聪明的方法将字符串变量传入正则表达式?
filterPage 看起来像:
export default class OrderHistory {
constructor() {
this.filter = Selector(
".filterCheckbox"
}
async selectFilter(text) {
await t.click(this.filter.withText(`/${text}`/i));
}
Run Code Online (Sandbox Code Playgroud)
测试页面如下所示:
test(“click the cheese filter”, async t => {
const cheeseFilter = Cheese;
await filterPage.selectFilter(cheeseFilter);
Run Code Online (Sandbox Code Playgroud)
});
我正在使用 test.testEqual() 在 Runestone 中开展一个项目。我使用 Anaconda/Spyder 控制台并将代码翻译回 Runestone。Python 似乎不支持 test.testEqual 所以我尝试在 unittest 框架下使用 TestCase.assertEqual(first,second, msg) 方法。我的代码抛出错误消息:TypeError: assertEqual() missing 1 required positional argument: 'second'
但正如我在下面的代码中所示,我在调用中包含了两个参数。我是单元测试的新手,所以不知道去哪里解决这个问题?
从 test.testEqual() 切换到 TestCase.assertEqual(first,second,msg)
from unittest import TestCase
def distance(x1, y1, x2, y2):
dx = x2 - x1
dy = y2 - y1
dsquared = dx**2 + dy**2
result = dsquared**0.5
return result
TestCase.assertEqual(distance(1,2, 1,2),0,msg='Equal')
TestCase.assertEqual(distance(1,2, 4,6), 5, msg='Equal')
TestCase.assertEqual(distance(0,0, 1,1), 2**0.5, msg='Equal')
Run Code Online (Sandbox Code Playgroud)
我们希望这三个测试用例根据它们在 Runestone 控制台中的执行情况通过。
我有一些代码要求我调用属性设置器来测试类的锁定功能是否正常工作(类的某些功能是async,要求在执行期间设置挂锁布尔值)。RuntimeError如果已为实例设置了锁,则已写入设置器以引发 a 。
这是代码:
@filename.setter
def filename(self, value):
if not self.__padlock:
self.__filename = value
else:
self.__events.on_error("data_store is locked. you should be awaiting safe_unlock if you wish to "
"change the source.")
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,如果self.__padlock是True,aRuntimeError被提升。尝试使用 python 断言 setter 时会出现问题unittest。
似乎unittest缺乏断言属性设置器是否引发异常所需的功能。
尝试使用assertRaises显然不起作用:
# Non-working concept
self.assertRaises(RuntimeError, my_object.filename, "testfile.txt")
Run Code Online (Sandbox Code Playgroud)
如何断言类的属性设置器将在 pythonunittest.TestCase方法中引发给定的异常?
我正在制作自己的数独解算器版本。是否有任何开源测试用例可以用来测试我的算法的效率(我不只是想要随机测试用例。我想要标记为简单、中等、困难的测试用例)。
非常感谢!
我已经在全局注册了一个组件并在多个文件中使用。有超过100个测试用例文件同时使用了mount和shallowMount,所以我无法转到每个测试用例并将mount更改为shallowMount。
有没有办法全局存根组件,而不是转到每个测试用例并手动存根它。
我需要为压缩和解压缩ArraySegment对象的方法编写单元测试.这些方法中有很多奇怪的处理方法,我不需要理解.(他们也使用一些系统方法 - 我不知道他们的实现.)
问题在于如何实际测试这些东西.我可以检查具体输入的压缩方法的结果是什么Lorem ipsum dolor sit amet, consectetur adipisicing elit.- 并根据此实验创建一个测试用例,但此解决方案不测试任何边界情况.
我还可以测试在某些序列上进行压缩然后解压缩是否给出了第一个输入序列,但这不是纯粹的单元测试.
你遇到过这样的问题吗?它有什么好的解决方案吗?
触发OptimisticLockingFailureException的代码:
@Test
public void shouldIncrementUserTotalLikesByOne() throws IllegalArgumentException, UserNotFoundException {
databuilderService.createAll();
User user = userService.findByEmail("abc@gmail.com");
long numberOfLikeCount = user.getLikeCount();
userService.incrementUserTotalLikesByOne(user.getId());
userService.save(user);
long numberOfUpdatedUpdatedCount = user.getLikeCount();
Assert.assertNotNull(numberOfUpdatedUpdatedCount);
Assert.assertEquals(numberOfUpdatedUpdatedCount, numberOfLikeCount+1);
}
Run Code Online (Sandbox Code Playgroud)
发生以下情况时会发生异常UserService.save():
org.springframework.dao.OptimisticLockingFailureException: Optimistic lock exception on saving entity:
有没有办法找出是否在执行某些代码期间引发和获救了任何异常?
最好是用ActiveSupport::TestCaseRSpec 编写而不是用RSpec 编写的测试
是否有任何全局ruby异常堆栈或其他东西,我可以检查?
testcase ×10
testing ×3
unit-testing ×3
python ×2
assert ×1
c# ×1
class ×1
compression ×1
django ×1
exception ×1
java ×1
javascript ×1
jestjs ×1
mongodb ×1
node.js ×1
properties ×1
ruby ×1
spring-data ×1
stub ×1
sudoku ×1
vue.js ×1