在Java中,程序员可以为JUnit测试用例指定预期的异常,如下所示:
@Test(expected = ArithmeticException.class)
public void omg()
{
int blackHole = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)
我怎么在Kotlin做这个?我尝试了两种语法变体,但没有一种工作:
import org.junit.Test as test
// ...
test(expected = ArithmeticException) fun omg()
Please specify constructor invocation;
classifier 'ArithmeticException' does not have a companion object
test(expected = ArithmeticException.class) fun omg()
name expected ^
^ expected ')'
Run Code Online (Sandbox Code Playgroud) 在Python中,打开文件时,我们使用'r'
指示只读和只'w'
写.然后我们'r+'
用来表示"读写".
为什么不用'rw'
?没有'rw'
看上去比更自然'r+'
?
1月25日编辑:
呵呵..我想我的问题看起来有点混乱..我试图问的是:'r'
是的"读"的第一个字母'w'
的"写",因此第一个字母'r'
和'w'
看起来自然映射到"读"和"写".但是,当涉及到"读写"时,Python使用'r +'代替'rw'
.
所以问题实际上是关于命名原理而不是它们之间的行为差异.
我目前正在开发一个相当简单的django项目,可以使用一些帮助.它只是一个简单的数据库查询前端.
目前,我仍然坚持使用复选框,单选按钮等来改进搜索
我遇到的问题是弄清楚如何知道何时选中复选框(或多个).到目前为止我的代码是这样的:
views.py
def search(request):
if 'q' in request.GET:
q = request.GET['q']
if not q:
error = True;
elif len(q) > 22:
error = True;
else:
sequence = Targets.objects.filter(gene__icontains=q)
request.session[key] = pickle.dumps(sequence.query)
return render(request, 'result.html', {'sequence' : sequence, 'query' : q, 'error' : False})
return render(request, 'search.html', {'error': True})
Run Code Online (Sandbox Code Playgroud)
search.html
<p>This is a test site</p></center>
<hr>
<center>
{% if error == true %}
<p><font color="red">Please enter a valid search term</p>
{% endif %}
<form action="" method="get">
<input type="text" name="q"> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用networkx创建带标签的图形,但是无法正确地获取节点和标签.简而言之,标签不会排列在右侧节点上,并且有些节点在显示时没有边缘.
首先,我创建了一个图形,添加了节点和边,然后添加了标签.
图形数据来自pandas DataFrame对象,其中包含两个列:employee和manager名称:
emp_name mgr_name
0 Marianne Becker None
1 Evan Abbott Marianne Becker
2 Jay Page Marianne Becker
3 Seth Reese Marianne Becker
4 Maxine Collier Marianne Becker
Run Code Online (Sandbox Code Playgroud)
...
每个节点都是名称,边是mgr_name到emp_name的关系.
我的图代码:
import networkx as nx
G=nx.DiGraph()
#set layout
pos=nx.spring_layout(G)
#add nodes
G.add_nodes_from(df.emp_name)
G.nodes()
G.add_node('None')
#create tuples for edges
subset = df[['mgr_name','emp_name']]
tuples = [tuple(x) for x in subset.values]
#add edges
G.add_edges_from(tuples)
G.number_of_edges()
#draw graph
import matplotlib.pyplot as plt
nx.draw(G, labels = True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会有一个树状结构,员工姓名作为每个节点的标签.
输出图像是
我正在使用Python 2.7,我喜欢那个困扰我的问题.
这是最简单的例子:
>>> class A(object):
def __del__(self):
print("DEL")
def a(self):
pass
>>> a = A()
>>> del a
DEL
Run Code Online (Sandbox Code Playgroud)
这就像预期的那样......现在我正在尝试改变a()
对象的方法,a
发生的事情是在更改后我不能再删除a
了:
>>> a = A()
>>> a.a = a.a
>>> del a
Run Code Online (Sandbox Code Playgroud)
只是做一些检查我a.a
在作业之前和之后打印参考
>>> a = A()
>>> print a.a
<bound method A.a of <__main__.A object at 0xe86110>>
>>> a.a = a.a
>>> print a.a
<bound method A.a of <__main__.A object at 0xe86110>>
Run Code Online (Sandbox Code Playgroud)
最后我使用objgraph
模块试图理解为什么没有释放对象:
>>> b = A()
>>> import …
Run Code Online (Sandbox Code Playgroud) 我已经尝试过这项工作1. 捕获照片 2. 从它保存的地方获取照片 3. 以base64的形式阅读照片
我遵循了这种方法:
var cameraOptions = {};
function capturePhoto() {
console.log("capture photo");
cameraOptions = { quality: 70, destinationType: Camera.DestinationType.FILE_URI, sourceType: Camera.PictureSourceType.CAMERA, saveToPhotoAlbum: true };
doIt();
}
function doIt() {
navigator.camera.getPicture(onCameraSuccess, onCameraFail, cameraOptions);
}
function onCameraSuccess(imageURI) {
console.log("Camera Success");
$('#MokhalfaPhotoLocation').val(imageURI);
console.log("Image URI: " + imageURI);
window.resolveLocalFileSystemURI(imageURI, onResolveImageSuccess, onFail); //get the file from the physical path...
}
function onResolveImageSuccess(fileEntry) {
fileEntry.file(gotFile, onFail);
}
function gotFile(file) {
readDataUrl(file);
}
function readDataUrl(file) {
console.log("read file as dataUrl");
var reader = …
Run Code Online (Sandbox Code Playgroud) 我正在使用python制作Raspberry Pi程序.我想写unittest
我的python代码.如何获得输出状态GPIO
?
测试目标类是下面的.我想在调用stop,brake,rotateClockwise和rotateCounterClockwise后检查输出.
import RPi.GPIO as GPIO
# moter management class, with like TA7291P
class MoterManager:
def __init__(self, in1Pin, in2Pin):
self.__in1Pin = in1Pin
self.__in2Pin = in2Pin
def stop(self):
self.__offIn1()
self.__offIn2()
def brake(self):
elf.__onIn1()
self.__onIn2()
def rotateClockwise(self):
self.__onIn1()
self.__offIn2()
def rotateCounterClockwise(self):
self.__offIn1()
self.__onIn2()
def __onIn1(self):
GPIO.output( self.__in1Pin, True)
print "In1 on"
def __onIn2(self):
GPIO.output( self.__in2Pin, True)
print "In2 on"
def __offIn1(self):
GPIO.output( self.__in1Pin, False )
print "In1 off"
def __offIn2(self):
GPIO.output( self.__in2Pin, False )
print "In2 off"
Run Code Online (Sandbox Code Playgroud) 我正在调用一个python函数来从我的C++代码中计算"t-test".函数调用如下:
#include <iostream>
#include "Python.h"
#include "/usr/local/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h"
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
int main(int argc, char** argv)
{
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"PATH_TO_MOD\")");
PyObject *pName = PyString_FromString("tmpPyth");
PyObject *pModule = PyImport_Import(pName);
double arr[] ={9.74219, 10.2226, 8.7469, 8.69791, 9.96442, 9.96472, 9.37913, 9.75004};
double arr1[] ={9.74219, 10.2226, 8.7469, 8.69791, 9.96442, 9.96472, 9.37913, 9.75004};
PyObject *lst = PyList_New(8);
PyObject *lst1 = PyList_New(8);
// if (!lst)
// return NULL;
for (int i = 0; i < 8; i++) {
PyObject *num = PyFloat_FromDouble(arr[i]);
PyObject *num1 = PyFloat_FromDouble(arr1[i]); …
Run Code Online (Sandbox Code Playgroud) 是否可以模拟在函数内部导入的模块?
例如
def my_func(input):
import something_else
something_else.do_something(input)
Run Code Online (Sandbox Code Playgroud)
由于循环依赖,我在函数内部有一个导入。基于我的谷歌搜索,我认为我是 SOL,但想知道是否有人知道如何使这成为可能。
我只想验证 do_something 是否被调用。
我有一个名为 api 的 Python Flask 蓝图,其中有一个名为 utils 的文件,其中包含一个我试图模拟的函数。该 utils 文件的路径是app/api/utils.py
,而我试图模拟的函数是is_file_writeable()
.
我正在对位于 的蓝图中的路线进行测试app/api/configs.py
。在 中configs.py
,我按如下方式导入函数:
from app.api.utils import is_file_writeable
Run Code Online (Sandbox Code Playgroud)
我尝试了以下补丁装饰器:
@patch('app.api.configs.is_file_writeable', return_value=False)
Run Code Online (Sandbox Code Playgroud)
和
@patch('app.api.utils.is_file_writeable', return_value=False)
Run Code Online (Sandbox Code Playgroud)
两者分别返回以下错误:
AttributeError: 'Blueprint' 对象没有属性 'configs'
和
AttributeError: 'Blueprint' 对象没有属性 'utils'
关于为什么我收到导入错误的任何想法?
假设我们有一个功能f(x,y)
和另一个功能
def g():
# ...
f(i,j) # i,j vary and f is called multiple times
# ...
Run Code Online (Sandbox Code Playgroud)
我们要编写一个单元测试,以检查是否f
调用了次数并具有正确的参数。
def test_g():
with patch('mymodule.f') as function:
assert function.gacs.call_count == correct_no_calls
Run Code Online (Sandbox Code Playgroud)
有
function.assert_called_with(...)
Run Code Online (Sandbox Code Playgroud)
但这仅指最后一次通话。因此,假设g
电话f(1,2)
,然后f(2,3)
,function.assert_called_with(1,2)
是False
。
此外,还有
function.call_args_list
Run Code Online (Sandbox Code Playgroud)
产生call
具有正确参数的对象列表。将此列表与call
我们在单元测试中创建的对象进行比较感觉很麻烦。call
似乎是模拟库的内部类。
有一个更好的方法吗?我使用此设置来测试apply
功能的并行执行。
我有一个表格,其中有一个字符串日期,格式为01.04.2015
. 现在我想在该字符串日期格式列中添加一些天数。为此,我在下面的查询中添加了几天。
SELECT DATE_ADD(level2,INTERVAL 28 DAY) level2 FROM sales_purchase_stocks_hs WHERE stock= '123'
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,我得到了错误的日期输出。输出是2001-05-18 15:00:00
。但我的原始日期字符串是01.04.2015
(2015 年 4 月 1 日)。
我尝试使用以下查询
SELECT STR_TO_DATE(DATE_ADD(level2,INTERVAL 28 DAY),'%d.%m.%Y') level2 FROM sales_purchase_stocks_hs WHERE stock = '123'.
Run Code Online (Sandbox Code Playgroud)
但是当我运行查询时,我得到null
了结果。任何人都可以帮助我哪里做错了吗?
用户输入一串字符,但在此之前输入字符串的大小.然后我必须阅读并计算每个字母输入的次数.
这是我的代码:
#include <stdio.h>
char ab[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; //Size = 26
int main(void)
{
int i, j, size, counter[26];
char temp;
for(i=0; i<26; i++)
{
counter[i]=0;
}
scanf("%d",&size);
for(i=0; i<size; i++)
{
scanf("%c",&temp);
for(j=0; j<26; j++)
{
if(ab[j]==temp)
{
counter[j]++;
break;
}
}
}
for(i=0; i<26; i++)
{
printf("We have %d %c\n",counter[i],ab[i]);
}
return 0; …
Run Code Online (Sandbox Code Playgroud)