面向开发者的 AI 辅助编码
Francesca Donadoni
AI Curriculum Manager, DataCamp
编写一个 Python 函数来解析电子邮箱地址。
编写一个 Python 函数来解析电子邮箱地址。其应通过以下测试:
- 接受有效地址,如 "[email protected]"。
- 拒绝无效输入,如 "user@@domain"。
- 为空输入时抛出 ValueError。
用户提示: 为一个处理用户提交的表单数据并插入 SQL 数据库的函数生成 Python 单元测试。
模型回复:
以下是可直接运行的 pytest 测试套件,覆盖校验、规范化、SQL 注入安全与事务行为,针对处理表单并插入记录的函数。
[...]
# ---------- Test DB fixtures ----------
@pytest.fixture()
def conn():
"""In-memory SQLite DB with a users table."""
c = sqlite3.connect(":memory:") [...]
用户提示: 使用 pytest 为下列函数生成 Python 单元测试。包含空输入、输入中的 SQL 关键字和特殊字符用例。假设使用模拟的数据库连接。 <INSERT FUNCTION>
模型回复:
以下是一个自包含的 pytest 测试模块,使用 mock(无真实 DB),覆盖空输入、SQL 关键字与特殊字符。还验证了提交/关闭行为,并确认异常被吞掉。
[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
"""
Patch sqlite3.connect to return a MagicMock connection + cursor.
[...]
$$
扫描下列 Python 函数的潜在漏洞,并在发现时给出更安全的替代方案。
$$
审查此代码中的常见 Web 安全问题,包括 SQL 注入、XSS 和输入验证缺陷。

def login(username, password):
query = f"SELECT * FROM users WHERE username = '{username}' \
AND password = '{password}'"
result = db.execute(query)
return result.fetchone()
以下是对该登录函数的聚焦式 OWASP Top 10 审计,以及更安全的改写。
username = "admin' --" → 绕过密码校验。[...]面向开发者的 AI 辅助编码