在python中,有两种方法可以捕获异常
except Exception, e:
except Exception as e:
Run Code Online (Sandbox Code Playgroud)
似乎'e'是未来使用的那个.在什么版本的python做了这个改变?知道为什么吗?
我只是继承了一些让我感到不安的代码:有一个测试库,其中包含与我们网站上的网页相对应的类,每个网页类都有自动化该页面功能的方法.
有一些方法可以单击页面之间的链接,返回链接页面的类.这是一个简化的例子:
文件homePageLib.py:
class HomePage(object):
def clickCalendarLink(self):
# Click page2 link which navigates browswer to page2
print "Click Calendar link"
# Then returns the page2 object
from calendarLib import CalendarPage
return CalendarPage()
Run Code Online (Sandbox Code Playgroud)
文件calendarLib.py:
class CalendarPage(object):
def clickHomePageLink(self):
# Click page1 link which navigates browswer to page1
print "Click Home Page link"
# Then return the page2 object
from homePageLib import HomePage
return HomePage()
Run Code Online (Sandbox Code Playgroud)
然后,这允许脚本文件单击页面并将该对象作为该方法的返回值,这意味着脚本作者不必在浏览站点时保持实例化新页面.(我觉得这是一个奇怪的设计,但我不能完全理解为什么,除此之外,有一个名为'clickSomeLink'的方法并返回结果页面的对象似乎很奇怪.)
以下脚本说明了脚本如何在站点中导航:(我插入print page以显示页面对象如何更改)
脚本文件:
from homePageLib import HomePage
page = HomePage()
print page
page = …Run Code Online (Sandbox Code Playgroud) 我在数据库中有一系列测试和案例.每当测试被废弃时,它都会过时,并且该测试的任何子案例也应该过期.我认为有两种方法可以做到这一点:
1)将保存功能修改为结束日期子案例.
2)创建一个侦听正在保存的测试模型的接收器,然后结束其子案例的日期.
有没有理由使用另一个以外的人?
编辑:我看到这篇博文建议在检查模型的给定值时使用save方法.因为我正在检查end_date,也许这表明我应该使用自定义保存?
Edit2:另外,对于记录,完整的层次结构是Protocol - > Test - > Case - > Planned_Execution,并且只要一个end_dated,每个子节点也必须是endDated.我想我最终会为每个人做同样的事情.
编辑3:事实证明,为了判断当前的save()是否是结束测试的那个,我需要访问旧数据和新数据,所以我使用了自定义保存.这是它的样子:
def save(self):
"""Use a custom save to end date any subCases"""
try:
orig = Test.objects.get(id=self.id)
enddated = (not orig.end_date) and self.end_date is not None
except:
enddated = False
super(Test, self).save()
if enddated:
for case in self.case_set.exclude(end_date__isnull=False):
case.end_date = self.end_date
case.enddater = self.enddater
case.save()
Run Code Online (Sandbox Code Playgroud) 有没有办法将CharField更改为TextField并保持此列中的数据完好无损?
现在我有以下内容:
class TestLog(models.Model):
failed_reqs = models.CharField(max_length=DB_MAX_CHAR_LENGTH, blank=True)
passed_reqs = models.CharField(max_length=DB_MAX_CHAR_LENGTH, blank=True)
Run Code Online (Sandbox Code Playgroud)
但是DB_MAX_CHAR_LENGTH是500,因为事实证明这个字段有时会超过它,所以我想去:
class TestLog(models.Model):
failed_reqs = models.TextField(blank=True)
passed_reqs = models.TextField(blank=True)
Run Code Online (Sandbox Code Playgroud)
如何执行此操作并将数据保持在生产数据库中?
Djangobook详细介绍了如何添加和删除字段,我也尝试使用South来执行此操作,但是South给了我一个错误,并查看错误之前的输出,好像South正在删除并重新创建数据库.这是南方数据迁移的全部意义吗?
我有一个字典如下:
someDict = {'a':[], 'b':[]}
Run Code Online (Sandbox Code Playgroud)
我想确定这个字典是否有任何非空列表的值.如果是这样,我想返回True.如果没有,我想返回False.有什么办法让这个单线眼镜?
在某些情况下,我们的团队必须使用Python 2.4.1.在Python 2.4.1 strptime中的datetime.datetime模块中不存在:
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.strptime
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'
Run Code Online (Sandbox Code Playgroud)
与2.6相反:
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> …Run Code Online (Sandbox Code Playgroud) 将资源状态从一个项目(即,移动模块调用)迁移到另一个项目的最不痛苦的方法是什么,特别是在使用远程状态存储时?虽然重构在同一个状态文件中相对简单(即,获取此资源并将其移动到子模块,反之亦然),但我没有看到JSON手术的替代方法,用于重构到不同的状态文件,特别是如果我们使用远程(S3)状态(即,取这个子模块并将其移动到另一个项目).
我正在尝试改进一些现有的代码,这些代码最初耗时3分钟来准备一个大型dataTable(然后由Ajax返回).旧代码遍历大型querySet,从各种相关对象收集信息.从我所阅读的内容和监视SQL日志开始,迭代查询集通常是一个坏主意,因为SQL是针对每个项目执行的.相反,我一直在使用值来在单个SQL语句中收集信息,然后迭代它.使用这种技术,我将执行时间减少到15秒以下(我还没有完成).但是因为我不再使用模型对象,所以我不能使用get_FOO_display().有没有办法在使用values()时使用此功能?
简化后,原来是:
for user in users:
data.append(user.get_name_display()) # Appends 'Joe Smith'
return data
Run Code Online (Sandbox Code Playgroud)
新代码是:
for user in users.values('name'):
data.append(user['name']) # Appends 'JSmith001', which is incorrect
return data
Run Code Online (Sandbox Code Playgroud)
此外,如果有其他方法来保留模型对象的创建,但只需要在后端有一个SQL语句,我很想知道它.谢谢!
我们在一组测试站上运行一堆Python测试脚本.测试脚本与这些测试站上的硬件单元连接,因此我们每站一次运行一个测试脚本(我们无法虚拟化所有内容).我们构建了一个工具来为不同的工作站分配测试并报告测试结果 - 这使我们可以排队数千次测试并让它们在一夜之间或任何时间内运行.
偶尔,我们发现测试站将退出群集.当我远程登录它们时,我得到一个黑屏,然后他们重新启动,然后登录时我被告知Windows XP有"严重错误".事件日志包含此错误的记录,其中说明Category: (102)和Event ID: 1003.
以前,我们发现这是由数百个临时Firefox配置文件的创建引起的 - 我们的测试使用selenium webdriver来自动化网站交互,每次我们启动新的浏览器时,都会创建一个临时的Firefox配置文件.我们在清除这些临时Firefox配置文件的每个测试之间添加了一个清理步骤,但是我们仍然发现某些时候站点丢失,并且总是在事件日志中出现这个严重错误和记录.
我想找到这个问题的根本原因,但我不知道该怎么做.我已经尝试搜索有关如何读取事件日志条目的信息,但我没有发现任何有用的信息.我对如何调试此问题的方法持开放态度.