为什么这个程序在运行时给我一个"Debug Assertion Failed"错误信息
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
using namespace std;
int conv_ch(char b)
{
int f;
f=b;
b=b+0;
switch(b)
{
case 48:
f=0;
break;
case 49:
f=1;
break;
case 50:
f=2;
break;
case 51:
f=3;
break;
case 52:
f=4;
break;
case 53:
f=5;
break;
case 54:
f=6;
break;
case 55:
f=7;
break;
case 56:
f=8;
break;
case 57:
f=9;
break;
default:
f=0;
}
return f;
}
class Student
{
public:
string id;
size_t id_len;
string first_name; …Run Code Online (Sandbox Code Playgroud) 如果断言失败,我会得到以下输出:
引发 SYSTEM.ASSERTIONS.ASSERT_FAILURE :Dynamic_Predicate 在 file.adb:36 处失败
我能得到更多细节吗?例如输入是什么,或者堆栈跟踪,或者其他任何可以帮助我确定断言失败原因的东西?
我在Python 2.7中遇到列表别名或变量赋值的问题.我将向您展示一个最小的例子.有和没有断言有两种不同的结果,我不知道断言为什么/如何影响这一点.
不知何故,当我向object_list下面显示的内容添加时,它会覆盖一个属性:
class Object1(object):
def __init__(self):
self.object_list = []
def add_thing(self, thing):
# this next line makes all the difference
assert thing.name not in [thing.name for thing in self.object_list], 'agent id already exists, use another one'
self.object_list.append(thing)
class Thing(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
这是一个最小的例子:
随着断言
mfd = Object1()
myAgent = Thing('blah')
myAgent_2 = Thing('blew')
mfd.add_thing(myAgent)
mfd.add_thing(myAgent_2)
print mfd.object_list
>> [blah, blah]
Run Code Online (Sandbox Code Playgroud)
没有断言
mfd = Object1()
myAgent = …Run Code Online (Sandbox Code Playgroud) 所以我有一个页面,预计会返回内容或返回django中的403页面
response = self.client.get(...)
print response.status_code
print type(response.status_code)
assert response.status_code is 200
print "WHAT IS GOING ON!?!?!?!"
response = self.client.get(...)
code = response.status_code
print code
print type(code)
assert code is 403
print "hmm"
Run Code Online (Sandbox Code Playgroud)
返回输出:
200
<type 'int'>
WHAT IS GOING ON!?!?!?!
403
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
显然代码失败assert code is 403但我无法想象为什么.我甚至通过更改线路assert 403 is 403和测试通过来检查自己.我是Python和Django的新手,所以我可能会遗漏一些明显的东西.