小编Nir*_*Izr的帖子

我应该如何登录我的 pytest 插件?

我正在构建一个 pytest 插件,目前我通过在插件文件的顶部添加类似于以下两行的内容来登录:

logging.basicConfig()
log = logging.getLogger(PLUGIN_NAME)
Run Code Online (Sandbox Code Playgroud)

但是,这似乎没有考虑 pytest 配置(通过命令行选项或 ini 文件),例如日志文件路径、记录器格式等。

我可以手动将它们复制到我的basicConfig电话中,但我认为 pytest 和第三方插件之间有更好的工具用于日志记录,不是吗?

我在 pytest 的文档和代码中发现了相当多的日志记录参考,但所有这些都在讨论捕获测试日志。我对记录pytest 插件本身很感兴趣。

python testing logging pytest

5
推荐指数
1
解决办法
965
查看次数

bash 忽略特定错误代码(pytest 没有测试警告错误代码 5)

我有一个程序可以测试我提供的脚本/命令的错误代码。在某些情况下,命令行会返回一个我想忽略的警告错误代码(以 0 而不是 5 退出)。我希望其他错误代码也能传递相同的代码,并且尽可能简单(以保持单行命令)。

我尝试过使用pytest || [ $? -eq 5 ],它会忽略来自命令的错误代码 5,但会将所有非零错误代码替换为 1(而不是实际的错误代码)。

我想比我更有 bash 经验的人可以比我更快地提出更好的解决方案。

一些更具体的上下文:

我正在使用 pytest 来测试我的项目。其中一些目前没有测试,pytest 的默认行为是将其视为错误(错误代码 5)。我想把这个错误视为成功。事实上,我希望特拉维斯能把这个错误当作成功来威胁。

谢谢!

bash error-code

4
推荐指数
1
解决办法
1290
查看次数

反向工程师HTTP请求

我截获了一个来自Charles的来自iPhone的Instagram请求到Instagram,这里是标题

POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.0.1 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; en; scale=2.00; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1.0, hi-IN;q=0.9,
Content-Length: 1601
Accept-Encoding: gzip, deflate
Run Code Online (Sandbox Code Playgroud)

在压缩的请求中也有Post数据.我的问题是如何解压Post数据?也许NSData中可以解压缩的任何方法?

编辑:这是完整的HTTP请求

POST /logging_client_events HTTP/1.1
Host: graph.instagram.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: keep-alive
Accept: */*
User-Agent: Instagram 10.3.0 (iPhone8,1; iOS 10_1_1; en_IN; en-IN; scale=2.00; gamut=normal; 750x1334) AppleWebKit/420+
Accept-Language: en-IN;q=1, hi-IN;q=0.9
Content-Length: 4585
Accept-Encoding: gzip, deflate

message=eNrtXG1v4kgS%2FiunfLqTAupXtzvSfiAxZInOZsmQEPt0sowxYGNj1jZDYLX326%2FaMBNICJMsZCajTUZRwO6XqvJT1c%2FTtuePE286dcP%2BydkJJgwRxgUjumCYnZyezMrjCD4VYRKcnGGmU0GIQKiKGEWUnZa9PweZ6o6qtIr%2B8U%2BmIYGEwP%2BCbv3gc%2BgH6%2BHPBdcb51rFuJCNCmsYuKJf6EZFq%2BlMN2pGDV0I6DLwkjBeuJs9Gb1gBqnXK3rDqFfAPKMi8UWtYvCaIKyGOZM16JkHeR6mk1Wf8xqqo4sGhuYNvcIouaicn2ukQhr8HLzQ5LlGlYFe4Z2c%2FeePkyTtz2JwUTkExyee8vdkHvTy1B8Hheunk0ngF65XFEEyLR6HRJOkyhETQp6eBPdFBoP%2BcTIdwxCE6IxSHWvs5M8%2FT5%2BbKBy6vwducD9N81kW7Bxdl4xvDD7M0tkUehZBXrhgZOjFysgCGrgQBD8Og4kys4zGhhGnT8xSg06DDCaEDqUpYZq7gyDou7NB6GZBP8jD4eRg8zmjz9h%2FgJm59zk40DJJBZI7LMvSOE5nhxq3CmSRpnERTh9ZujoFneJwEjzYnAVB7IIxCzdMptkK1bss1zHBSGxYXvYBT8NC9ThDu%2ByMQ7CpnMFPZ8pYaFX220of1vOQlJT3PU2ygAVSoCDQexj7cuB5PoGBklkB1j8ayXOfzjjycjdZlC3LNp%2FDYP605ySYPz4U5u6Xo%2BD3kUMnNKy%2Fy9BxRDgl6L0GjhCKtPcYOCw1LHWpi3cbOU0I%2Bh4jxwXXpIDL%2Bl4jR%2BHL%2B0xWiTSJEf3ekQsneeENMy9x02zoTULfzWe9b0WRYUQ2gpinswwYVjpwPX8VxyezJS5YiNXf8P6ZMH9JPqYLKAyA8cdE7KG1SwhCmoHrFUSpVmE65hXJiKzUmDwX9QuBGoZWzroekmANuCb0pPCLMMLu1jTghz8OJ0NYXMeBMj9YXC29bn9m311jP7kJW2Ez%2FPfF1dy%2Bi%2FMeaYyb0VQ0k3h5Rxozu3vP%2B5dx5GOJ%2FKQReeRWnUf%2B5DaGPkvn7orA76B%2FKTOny9RY95YxXFrLOrIMe2EZTTIw6siM6sSM%2FLnZsZG5rBPLqN2bRkM3oyazDHPZMuDYr3NiR7W5Y9jEurSxZViRc2mFrc7VuHXZntvLm3tzeTuyl6NRq9tcOJGN7ChO7ATmjBqh1akRK7LnLaMxhvMwvjW2E5s1w3nYv7udOhdNrRn53InaBNou7K4zbnXgcxfGTG4jJ2kvra6JreUNjNskZqe9AHsX1rIG47eXpe1GfW5%2BupLgu%2FIb4ihnzSjFg%2FYvvyhWrrjQ3AXUFbNcIaX8DsE%2FjHsBJoXcxQo79U%2BdQ8nr57AfpK4fxLHrzYp0GkPy92bDAWB52%2BiV1niwe831FYT9kTcZ7jZdSkz2sf3TjXGUlAgH4dYxlbLFYqomvOhce%2F0wrfk%2BZE4n8EeTNE6Hi18%2FGb%2FVngY4Dn2vWCX52uDYm038kTvLvV6801hJgVNsqoe1yxCw30bpJNBPMXRL85WMw1X1LZyEBaSWux48gZOYy6rATEisqbKn3H%2Fq9Zd%2BE8BL2QlxGFAirlP40TQQjT1IXHWlJ31XtT45G3hxHjx0VQUJqrfqrWFRFZqmC45AnGJNf2i1crdspUtcZYKXhjGuYfqCoE1n%2BQiMLOC6rE7BylAUCtK7AsigdG1Wz57XHwYwc5HNwHAvDrLi67dcefb1246aCZpZZdKuS1eO605mSU%2BJaii5sQf67snRzJt%2FNfdM7MnBfpgp2ToLXciSwU7XBCZiExuDMIMppx7gfu0CrCqzWKVXPishujMP1XpXLk299F7Ns4J2Fvw%2BUwq1nBaOpgXo1P4sW12MM03yPcZngRerjipVcj8Le8E%2B%2FS2FBgDbcORrd0j%2B0IfxZnmQVfo5qTwY%2Fj%2By05nHM09LgHgxHO8voKSFubrcJWz32F%2Fq8UnhxqnXD%2Fo7bdYZQZs2f%2BmyDt90lBbpTgs3x15F9wwyF2LAOWFSSp0gjT40g5WiGAFUONpj78N2Rz%2Fsu%2Bk02EEkaFVyjW9JgFfsczy9ojvCwqqUUV2KvcX1hRf3lUQ0CwYA9tEumxgVQtP32nQ0zjkHLrnOtcEs%2FpKGO5noptlfUDMJinmajU9eSkLl42HWcGJaWRtQ%2BaMh%2FojkHpPlQ3w5FpQ8z%2FLpj1OWXFAJRIXoj2k%2BfkWED6L5iRdOVqxmD0Kh%2FGl4u%2F7lJffw07ivVpysgDEKf7SzoKy4HRjcV1MDVd%2BXx%2BWmsbIujstKnu%2ByR6dsfw4PehvjQCUocf4XBdA%2BcPEqSDQh5VupH5iDalIyio6qfiB%2BkhMuIAmRjqi7Nc0u9bPF3JWK%2BaYamlixP3FiP5aoR4q4FyolUUctw6SgYEirY3Jr6egrxQDqxxhjM7qhoIIWpjGcm3S%2BMKMhKB%2BTKRUBimhhdYb3ZtSmLaOf2F2lgGrcItdjk0CbaBRb3Zt767IRgWpatDo3S%2BvyOjSN25G1HHOrcwuqyEdWtxFZl%2FW51QFldGkqu6eg1Ea9pJEHd9dTm1qD%2Fq9XIxtsVuoHPmPn04YaSurUvFRKChTU0kocpXK61siM%2Bgkoqhj%2BhjAfKn14zrfFlXyl%2BnkxWFdL4HS1Q78LrJJpfw2sL1PoquNq%2BjMCpIEzqm5eYCY1rn8I8J9ZgL9qw2i9dn2zdEqdvg6Nz1v7gNRduHwp8p6i%2FAOL3wuLB%2BgdXuVcl1sc5TC9owuNcK2U%2FRTUn%2FZKvfMCewWMLI9mL0NIMkkFCDRo9gJ5dhT6o1Up4tv3OF9Nf%2FYtLQQxSoSG9OOyH0AKXF%2FEKcKYcndzlh9BflirYzNraQMpMSHD60vr7jH5sbnTGUJmQmYvx3Oze4PtTj80gciYBLK0cx1bSXthL60I%2Fo1tYlKr40Sm0ZxDJcGQ%2FcRW5KdTh6rgjFQGty6b34P8PPXt06vJzwj0fKr2WhfJYP30gNrb29CBfpokwaSvzoBW%2FxZkCSF4r3pYPZ1CYIXgjAssHvagnjVl656RFw%2FTLCxGyVengix3H46%2BsXtQucgL%2FKOQBpQTTfBX%2BYd%2FuH8gsrWXXD8oA1AWQem8yj%2By7Z%2FarXQzbzJ%2B1r9XFX6tyiRQDXG0wg%2FsWpdclBtzmKoHpx5XfinfQEuIKpFcZ%2FhnEL5bmoRwXRMCwbKlCZ2QD1n8t5DFL9AjCtEaouJjK%2BcDs%2B8Cs%2FvByghUsoPASvaBdePxk%2BNhVehch%2FVYEPiCBIywMcsPgKrPAIZzuKRwTknsGgUJ%2FQiqFpDoxtjstplFmthOGqHT8e%2FtTmNkR6OxgoDVuQZJPeROtxG2jPHcAahanThRnxUdb3Vux3b3BjnGVWR2AeCdm%2B8A1R2%2BXfyYXUcB0lwAzfwJNOIGUcBVrHON6QgopA5Vln0oyJ9YQR6XJ3C12vKPPY8PxL4dYl8lKgGSsLSS4%2B0mIoAGI7S8QY8Zpk%2F3EzVMDng%2BT1fPkyB%2B%2FJc2wAd1KzyfppM8zSAFY68XxErkfw6y%2FKD3OfQqIUKQNzB6%2FThhmqkHqsrHC4P5NM3UNRkOD4SGXqVUbD1fduh2g0YkxuWDQAA89VbSqzbGvx1lxgEZ2ptAI1x7nrqjcDiK4bd4DhpHoT56lYNZVPsJWPoG9UFV9QCqDiuE2uAB1v7B4f8OHH4f59GrwBw0chDnYXs5j65qKxXiyKRHI5rOOdQqwojmbk3zHcHa%2F8p6LHXMuMGtzpibUXthTR6D9Ta0uzazI8VynLGdXIV2p4nUPgiwHdS6tACw1xGwHYBQY%2BR04XPHiR3DX9qJAqpJHWNIACwwd3PRMtrcSerfBKsDx31ykzcnt9jrtsHXq5G1PA%2FNxFZAXDqJuu%2FcgLma1Insewf%2B2pHPLaPGzNX9adZS96ujIbbAt1Zpsx0O7tCbsR5ZRYKgIy5t6gU5QAyQHqxID%2FtON1FlVTABMx%2BSXPzHJBfGnHDJOOLsfSTXPVTmBQAQaH8NP1kJLq9CVelNVdWXQ%2BokbSUxVHIxc9kGMI8XZqKSq87MLlT6y%2Fa93W1je3kFssOcW0lz6VzeLCDhIAmdEFYPkBW175ZcICXU5iMcv4EVq%2F3GyaVrkqMjSgoGDeQ6u7g4ZnI9T8HK%2F0%2BASibJz7BybXMwiBaVYLxAAutU%2F1jYfuaF7Rksqzdn1OszvsqDMqFyN1N3wrOnObnGsvjWywvr3usnnv97egIq8kvOrv7vBjf4vMqVPPgdoPbn%2FwGSB1Nz&compressed=1&access_token=124024574287414%7C84a456d620314b6e92a16d8ff1c792dc&format=json
Run Code Online (Sandbox Code Playgroud)

reverse-engineering nsurlrequest

4
推荐指数
1
解决办法
1824
查看次数

新创建的暂停进程的EIP仅在Windows XP上失败 - 在kernal32.dll映像下的EIP?

我的程序在Windows Vista Ultimate和Windows 7上运行完美,但在Windows XP上运行失败.

首先,我的应用程序创建一个系统文件的进程,它调用GetThreadContext(remote_thread)并将LPVOID值设置为值context-> Eip,然后检查从VirtualQueryEx设置的结构MEMORY_BASIC_INFORMATION中的值.

以下是VirtualQueryEx在调用时返回的值:

Windows XP

  • 0 - 分配基础
  • 0 - 分配保护
  • 2088828928 - 基地址
  • 1 - 保护
  • 983040 - 地区大小
  • 65536 - 状态
  • 0 - 类型

Windows 7的

  • 2003959808 - 分配基础
  • 128 - 分配保护
  • 2004025344 - 基地址
  • 32 - 保护
  • 876544 - 区域大小
  • 4096 - 国家
  • 16777216 - 类型

Windows Vista

  • 2006122496 - 分配基础
  • 128 - 分配保护
  • 2006536192 - 基地址
  • 32 - 保护
  • 389120 - 地区大小
  • 4096 - 国家
  • 16777216 - 类型

为什么当我在Windows XP上运行我的应用程序时,它没有分配基础,也没有分配保护,以及与Windows 7和Windows …

c c++ winapi reverse-engineering process

3
推荐指数
1
解决办法
1605
查看次数

Python Django 从 DateField 中按月获取不同的查询集

class MyModel(models.Model):
    TRANSACTION_TYPE_CHOICES = (
        ('p', 'P'),
        ('c', 'C'),
    )
    status = models.CharField(max_length=50, choices=TRANSACTION_TYPE_CHOICES, default='c')
    user = models.ForeignKey(User, db_index=True, on_delete=models.CASCADE,related_name='user_wallet')
    date = models.DateField(auto_now=True)
    amount = models.FloatField(null=True, blank=True)


    def __unicode__(self):
        return str(self.id)
Run Code Online (Sandbox Code Playgroud)

我是一名新人Python django,对这方面有一点了解Django Rest Framework

我有一个像上面这样的模型,我想按月过滤日期字段并按月获取不同的查询集......有没有默认的方法可以做到这一点......

提前致谢

python django django-rest-framework

3
推荐指数
1
解决办法
2409
查看次数

SqlAlchemy:暂时禁用大插入事务的数据库约束

作为日常流程的一部分,我插入大量数据,我知道这些数据实际上不会使任何外键约束无效。为了加快速度,一些资源建议暂时删除任何索引或约束,并在插入准备好后重新应用它们。我知道这是有风险的,但仍然想尝试使用 SqlAlchemy。我没有添加任何手动约束,唯一的约束是 SqlAlchemy 由于外键和主键而定义的约束。

我的问题是:如何使用 SqlAlchemy API 暂时删除任何约束/索引,执行一组事务,然后再次应用自动生成的约束?

我希望有比手动操作更方便的方法。

谢谢!

postgresql sqlalchemy

2
推荐指数
1
解决办法
4127
查看次数

为什么__all__只包含字符串对象?

今天我遇到了以下的pylint错误:

invalid-all-object(E0604):

__all__中的无效对象%r必须仅包含在__all__中出现无效(非字符串)对象时使用的字符串.

而且我很好奇为什么直接暴露对象被认为是错误的?

python pylint

1
推荐指数
2
解决办法
519
查看次数